Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

windows heroku run rake db:migrate error "/usr/bin/env: ruby.exe: No such file or directory"

I'm pretty new to Rails here and I've followed Ruby on Rails Tutorial for most of it. I have since decided to make my own application, but using the Rails 4 gem in beta. I have installed PostgreSQL on my local machine (Windows 7) and done development. Everything works great! (I love Rails much more than C#, ASP, .NET work that I do for a living!)

However, once I decided to push to Heroku, I've been pulling my hair out. Prior to pushing to Heroku, I did the standard:

c:\Sites\elms>git add .
c:\Sites\elms>git commit -m "My comment"
c:\Sites\elms>git push
c:\Sites\elms>git push heroku master

I've downloaded and installed the Heroku Toolbelt (not heroku gem.) The first error told me I needed to make sure that my Gemfile specified Ruby >= 1.9.3, so I added "ruby 1.9.3" to the top of my Gemfile:

source 'https://rubygems.org'
ruby "1.9.3"

gem 'rails', '4.0.0.beta1'

gem 'pg'
gem 'haml-rails'
gem 'httparty'
gem 'devise', git: 'git://github.com/plataformatec/devise.git', branch: 'rails4'
gem 'cancan'
gem 'bootstrap-sass'
gem 'formtastic'
gem 'formtastic-plus-bootstrap'

group :development do
  gem 'annotate'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'guard-spork'
  gem 'guard-rspec'
  gem 'meta_request'
  gem 'rb-notifu'
  gem 'schema_to_scaffold'
  gem 'wdm', :platforms => [:mswin, :mingw], :require => false
  gem 'win32console'
end

group :development, :test do
  gem 'rspec-rails'
  gem 'pry'
  gem 'spork-rails', git: 'git://github.com/sahilm/spork-rails.git', branch: 'rails-4'
  gem 'spork', '~> 1.0.0rc3'
end

group :test do
  gem 'capybara'
  gem 'factory_girl_rails'
  gem "shoulda-matchers"
end

group :assets do
  gem 'sass-rails',   '~> 4.0.0.beta1'
  gem 'coffee-rails', '~> 4.0.0.beta1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'    
gem 'turbolinks'
gem 'jbuilder', '~> 1.0.1'

The push finally worked without any issues, but when I tried to migrate the database, I got the following:

c:\Sites\elms>heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.2205
/usr/bin/env: ruby.exe: No such file or directory

I have also tried: heroku run bin/rake db:migrate, and it gives same error. I am using Getting Started with Rails 4.x on Heroku to push my Rails 4 app to Heroku. Any help would be greatly appreciated!

Oh, I also had an issue after running:

c:\Sites\elmx>gem install rails --pre

I solved this by adding C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin; to my environment Path variable in Windows 7 (it was giving me an error that it couldn't find rails when trying to execute anything such as:

rails -v
rails g controller User

But if I typed just:

rails

It would give me all of the commands I could use (as if running rails -h)

I set up my machine by using the Windows Rails Installer, then installing the Rails 4 gem. This is extremely frustrating and I've scoured the internet trying to find someone with the same problem.

EDIT 1:

I just deleted my user Path environment variable and modified my system Path environment variable to look like such:

 C:\RailsInstaller\Ruby1.9.3\bin;C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;C:\Program Files (x86)\git\cmd;C:\Program Files (x86)\Heroku\bin

Updated my path variable to the above and uninstalled Heroku Toolbelt, then re-installed it (hence why the Heroku piece is in the path variable) and tried the following:

c:\Sites\elms>ruby -v
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]

c:\Sites\elms>rails -v
Rails 4.0.0.beta1

c:\Sites\elms>heroku -v
 !    `-v` is not a heroku command.
 !    Perhaps you meant `-h`.
 !    See `heroku help` for a list of available commands.

c:\Sites\elms>heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.2100
/usr/bin/env: ruby.exe: No such file or directory

c:\Sites\elms>heroku run bin/rake db:migrate
Running `bin/rake db:migrate` attached to terminal... up, run.2872
/usr/bin/env: ruby.exe: No such file or directory

EDIT 2:

So I got a little further in this venture. I found out that I could execute:

c:\Sites\elms>heroku run bash
~ $ cd bin
~/bin $ ruby rake db:migrate

And that would then run rake and migrate my database on Heroku. But the problem gets worse! I try to navigate to the page and it tells me that there is something wrong, so I run the log file and this is what I get:

c:\Sites\elms>heroku logs
2013-03-16T05:34:20+00:00 heroku[api]: Enable Logplex by
2013-03-16T05:34:20+00:00 heroku[api]: Release v2 created by 
2013-03-16T05:34:36+00:00 heroku[slugc]: Slug compilation started
2013-03-16T05:35:37+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 13423 -e $RAILS_ENV`
2013-03-16T05:35:37+00:00 heroku[slugc]: Slug compilation finished
2013-03-16T05:35:37+00:00 app[web.1]: bash: bin/rails: No such file or directory

2013-03-16T05:35:39+00:00 heroku[web.1]: Process exited with status 127
2013-03-16T05:35:39+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 33539 -e $RAILS_ENV`
2013-03-16T05:35:40+00:00 app[web.1]: /usr/bin/env: ruby.exe: No such file or directory
2013-03-16T05:35:41+00:00 heroku[web.1]: Process exited with status 127
2013-03-16T05:35:41+00:00 heroku[web.1]: State changed from starting to crashed
2013-03-16T05:35:41+00:00 heroku[web.1]: State changed from crashed to starting
2013-03-16T05:35:44+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 23452 -e $RAILS_ENV`
2013-03-16T05:35:44+00:00 app[web.1]: /usr/bin/env: ruby.exe: No such file or directory

This is getting really frustrating. I have no clue what the heck /usr/bin/env is. The only thing I can guess is that it's like PATH for Windows. If this is the case, why does the server not know where ruby.exe is?

I did make a non Rails 4 application and was able to post it to Heroku and view it with no issues. This is really getting on my nerves.

like image 868
Ringo Avatar asked Mar 15 '13 23:03

Ringo


4 Answers

You need to change in your application first line of the 3 files:

bin/bundle
bin/rails
bin/rake

Instead

#!/usr/bin/env ruby.exe

must be

#!/usr/bin/env ruby

That's why is error:

/usr/bin/env: ruby.exe: No such file or directory

Then you do successfully:

heroku run rake db:migrate

It's work for me.

like image 92
Boris Đurkan Avatar answered Oct 01 '22 12:10

Boris Đurkan


I had a similar issue and as others have already stated, changing the below helped.

#!/usr/bin/env ruby.exe to #!/usr/bin/env ruby

However, I also needed to remove some hidden carriage returns which were still present from developing on Windows originally (I guess?).

I used dos2unix to do this.

dos2unix bin/bundle bin/rake bin/rails

After that, I committed my changes, pushed to heroku and all was good.

like image 26
Lyrical Avatar answered Oct 02 '22 12:10

Lyrical


I had this same problem, changed ruby.exe to ruby in the three files as described above, executed the


    git push heroku master
step, which told me everything was up to date. Trying the

    heroku run rake db:migrate
step again, it still didn't work; I got the same error about no such file or directory for ruby.exe. I examined my gemfile.lock as directed, but didn't see anything that looked windows-y.

I then executed these:


    git add .
    git commit -m "My comment"
and tried again with

    git push heroku master
This time, boatloads of messages went by, including:

    Removing Gemfile.lock because it was generated on Windows.
so perhaps there was something wrong with it and I just didn't know what I should be looking for in it.

Trying again to


    heroku run rake db:migrate
looks to have worked, as I got

    Running rake db:migrate attached to terminal... up, run.3260
    ==  CreateUsers: migrating ====================================================
    -- create_table(:users)
       -> 0.0409s
    ==  CreateUsers: migrated (0.0412s) ===========================================

My best guess is that the change to remove the .exe from bundle, rake, and rails did not actually get pushed up on the first try of git push heroku master and the git add . and git commit -m "My comment" were necessary to make it get pushed up. This is my first attempt at anything with git/heroku/ruby, so I don't know enough to say why the other two commands were required, but leave my experience documented here in case it helps anybody else.
Thanks so much for the clue above that it was the .exe in those three files that caused the problem.

like image 25
C Smith Avatar answered Oct 03 '22 12:10

C Smith


bin/bundle
bin/rails
bin/rake

Instead

#!/usr/bin/env ruby.exe

must be

#!/usr/bin/env ruby

(thanks to previous post)

make sure there are no references to windows in the gemfile.lock - they can just be deleted

then

git push heroku master

if there are still problems use

heroku logs (copying text to a text editor makes it easier to cut and paste for solutions)

like image 31
Michael Berman Avatar answered Oct 03 '22 12:10

Michael Berman