windows heroku运行rake db:migrate error"/ usr/bin/env:ruby.exe:没有这样的文件或目录"

use*_*755 9 heroku windows-7 ruby-on-rails-4

我在这里对Rails很陌生,而且我已经遵循了Ruby on Rails Tutorial的大部分内容.我已经决定自己创建应用程序,但是在测试版中使用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
Run Code Online (Sandbox Code Playgroud)

我已经下载并安装了Heroku Toolbelt(不是herokugem.)第一个错误告诉我我需要确保我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'
Run Code Online (Sandbox Code Playgroud)

推送最终没有任何问题,但当我尝试迁移数据库时,我得到以下内容:

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
Run Code Online (Sandbox Code Playgroud)

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

哦,跑完后我也有问题:

c:\Sites\elmx>gem install rails --pre
Run Code Online (Sandbox Code Playgroud)

我通过C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;在Windows 7中添加我的环境Path变量解决了这个问题(它给了我一个错误,当它尝试执行任何操作时无法找到rails:

rails -v
rails g controller User
Run Code Online (Sandbox Code Playgroud)

但如果我输入:

rails
Run Code Online (Sandbox Code Playgroud)

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

我使用Windows Rails安装程序设置我的机器,然后安装Rails 4 gem.这是非常令人沮丧的,我已经搜索互联网试图找到有同样问题的人.

编辑1:

我刚刚删除了我的用户Path环境变量并修改了我的系统Path环境变量,如下所示:

 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
Run Code Online (Sandbox Code Playgroud)

将我的路径变量更新到上面并卸载了Heroku Toolbelt,然后重新安装它(因此为什么Heroku片段在路径变量中)并尝试以下方法:

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
Run Code Online (Sandbox Code Playgroud)

编辑2:

所以我在这次冒险中得到了进一步的发展.我发现我可以执行:

c:\Sites\elms>heroku run bash
~ $ cd bin
~/bin $ ruby rake db:migrate
Run Code Online (Sandbox Code Playgroud)

然后,这将运行rake并在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
Run Code Online (Sandbox Code Playgroud)

这真的令人沮丧.我不知道到底/usr/bin/env是什么.我唯一可以猜到的是它就像PATHWindows一样.如果是这种情况,为什么服务器不知道在哪里ruby.exe

我确实做了一个非Rails 4应用程序,并能够将它发布到Heroku并查看它没有任何问题.这真让我紧张.

小智 43

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

bin/bundle
bin/rails
bin/rake
Run Code Online (Sandbox Code Playgroud)

代替

#!/usr/bin/env ruby.exe
Run Code Online (Sandbox Code Playgroud)

一定是

#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)

这就是错误的原因:

/usr/bin/env: ruby.exe: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后你成功地做了:

heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)

这对我有用.