windows heroku运行rake db:迁移错误“/ usr / bin / env:ruby.exe:没有这样的文件或目录”

我对Rails很新,在Ruby on Rails教程中大部分都是这样。 我从那以后决定做我自己的应用程序,但使用testing版的Rails 4 gem。 我在本地机器(Windows 7)上安装了PostgreSQL并完成了开发。 一切都很好! (我喜欢Rails远远超过C#,ASP,.NET工作,我为了生活!)

然而,一旦我决定推到Heroku,我一直在拉我的头发。 在推向Heroku之前,我做了标准:

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 

我已经下载并安装了Heroku Toolbelt(不是Heroku的gem。)第一个错误告诉我,我需要确保我的Gemfile指定的Ruby> = 1.9.3,所以我添加了“ruby 1.9.3”到我的顶部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' 

推终于没有任何问题,但当我试图迁移数据库,我得到了以下几点:

 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 

我也试过: heroku run bin/rake db:migrate ,并且给出同样的错误。 我在Heroku上使用Rails 4.x入门将我的Rails 4应用程序推到Heroku。 任何帮助将不胜感激!

哦,跑完之后我也有一个问题:

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

我通过添加C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;来解决这个问题C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin; 到我的环境在Windows 7中的pathvariables(它给了我一个错误,当它试图执行任何东西,如:

 rails -v rails g controller User 

但是,如果我只是input:

 rails 

它会给我所有我可以使用的命令(就像运行rails -h

我使用Windows Rails安装程序设置我的机器,然后安装Rails 4 gem。 这是非常令人沮丧的,我已经search了互联网,试图find一个同样的问题的人。

编辑1:

我刚刚删除我的用户path环境variables,并修改我的系统path环境variables看起来像这样:

  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 

更新我的pathvariables到上面和卸载Heroku Toolbelt,然后重新安装它(因此为什么Heroku一块在pathvariables),并尝试以下内容:

 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 

编辑2:

所以我进一步在这个冒险。 我发现我可以执行:

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

然后,这将运行耙和迁移我的数据库在Heroku上。 但问题变得更糟! 我尝试导航到页面,它告诉我有什么问题,所以我运行日志文件,这就是我得到的:

 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 

这真让人沮丧。 我不知道什么是/usr/bin/env 。 我唯一能猜到的就是它像Windows的PATH 。 如果是这样的话,为什么服务器不知道ruby.exe在哪里?

我做了一个非Rails 4应用程序,并能够将其发布到Heroku并查看没有问题。 这真的让我神经紧张。

您需要在应用程序的第一行中更改3个文件:

 bin/bundle bin/rails bin/rake 

代替

 #!/usr/bin/env ruby.exe 

一定是

 #!/usr/bin/env ruby 

这就是为什么是错误:

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

那么你成功了:

 heroku run rake db:migrate 

这对我有用。

我有这个相同的问题,更改ruby.exe ruby​​在三个文件如上所述,执行

 git push heroku master 

这一步告诉我一切都是最新的。 尝试的

 heroku run rake db:migrate 

再一次,它仍然没有工作; 我得到了关于没有这样的文件或ruby.exe目录相同的错误。 我按照说明检查了我的gemfile.lock,但没有看到任何看起来像windows-y的东西。

然后我执行这些:

 git add . git commit -m "My comment" 

并再次尝试

 git push heroku master 

这一次,一大堆邮件过去了,包括:

 Removing Gemfile.lock because it was generated on Windows. 

所以也许有什么问题,我只是不知道我应该在哪里寻找。

再试一次

 heroku run rake db:migrate 

看起来像我一样工作

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

我最好的猜测是,从捆绑包,耙子和rails删除.exe的变化实际上并没有被推上了git push heroku master和git add的第一次尝试。 和git提交-m“我的评论”是必要的,以使其被推高。 这是我第一次尝试使用git / heroku / ruby​​,所以我不太清楚为什么还需要其他两个命令,但是在这里logging下我的经验,以便帮助其他人。
非常感谢上面的线索,这是导致问题的三个文件中的.exe文件。

我有一个类似的问题,正如其他人已经指出,改变下面的帮助。

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

但是 ,我也需要删除一些隐藏的回车,这些回车在Windows上的开发(我猜呢?

我用dos2unix来做到这一点。

 dos2unix bin/bundle bin/rake bin/rails 

之后,我做了我的改变,推到了heroku,一切都很好。

 bin/bundle bin/rails bin/rake 

代替

 #!/usr/bin/env ruby.exe 

一定是

 #!/usr/bin/env ruby 

(感谢上一篇文章)

确保gemfile.lock中没有对窗口的引用 – 它们可以被删除

然后

 git push heroku master 

如果仍然有问题使用

heroku日志(将文本复制到文本编辑器可以更轻松地剪切和粘贴解决scheme)