我在这里对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
我已经下载并安装了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
,它也会出现同样的错误。我正在使用Getting Started with Rails 4.x on Heroku将我的Rails 4应用程序推送到Heroku。任何帮助将不胜感激!
哦,跑完后我也遇到了问题:
c:\Sites\elmx>gem install rails --pre
我通过在Windows 7中将C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\bin;
添加到我的环境Path变量来解决这个问题(它给了我一个错误,它在尝试执行任何操作时无法找到rails:
rails -v
rails g controller User
但如果我输入:
rails
它会给我所有可以使用的命令(就好像在运行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
将我的路径变量更新为上面并卸载了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
编辑2:
所以我在这次冒险中得到了进一步的发展。我发现我可以执行:
c:\Sites\elms>heroku run bash
~ $ cd bin
~/bin $ ruby rake db:migrate
然后然后运行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
这真令人沮丧。我不知道到底是什么/usr/bin/env
。我唯一可以猜到的是它就像PATH
对于Windows。如果是这种情况,为什么服务器不知道ruby.exe
在哪里?
我确实制作了非Rails 4应用程序,并且能够将其发布到Heroku并且没有任何问题地查看它。这真让我紧张。
答案 0 :(得分:43)
您需要在应用程序中更改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
这对我有用。
答案 1 :(得分:3)
我遇到了类似的问题,正如其他人已经说过的那样,改变以下内容有所帮助。
#!/usr/bin/env ruby.exe
至#!/usr/bin/env ruby
然而,我还需要删除一些隐藏的回车,这些回车在Windows最初开发时仍然存在(我猜?)。
我使用dos2unix
来执行此操作。
dos2unix bin/bundle bin/rake bin/rails
之后,我做出了改变,推到了heroku,一切都很好。
答案 2 :(得分:2)
我有同样的问题,如上所述将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.
所以也许它有什么问题,我只是不知道我应该在里面寻找什么。
再试一次
Gemfile.lock
看起来有效,就像我得到的那样
heroku run rake db:migrate
我最好的猜测是,从bundle,rake和rails中删除.exe的更改实际上并没有在第一次尝试时被推高
git push heroku master
和
git add。
和
git commit -m“我的评论”
有必要让它被推高。这是我第一次使用git / heroku / ruby进行任何尝试,所以我不知道为什么需要另外两个命令,但请记录下我的经验,以防其他人帮助。
非常感谢上面的线索,这三个文件中的.exe导致了这个问题。
答案 3 :(得分:1)
bin/bundle
bin/rails
bin/rake
相反
#!/usr/bin/env ruby.exe
必须是
#!/usr/bin/env ruby
(感谢上一篇文章)
确保gemfile.lock中没有对windows的引用 - 它们可以被删除
然后
git push heroku master
如果仍有问题,请使用
heroku日志(将文本复制到文本编辑器可以更轻松地剪切和粘贴解决方案)
答案 4 :(得分:0)
尝试一下:
sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
然后安装Nokogiri:
gem install nokogiri