我有一个基本的rails应用程序可以在我的Windows 8桌面上运行(rails_12factor,ruby 1.9.3,rails 4,postgres) - 使用rails server
- 我可以在我的本地浏览器上导航到应用程序网站一切都很好。
我通过git push heroku master
将应用程序推送到heroku,一切似乎都没问题。我看到的唯一警告是"删除Gemfile.lock
,因为它是在Windows上生成的。"该过程以以下消息结束 - "启动...已完成,v9"。
然而,在跑步" heroku ps"我得到以下内容:
=== web(1X):bin/rails server -p $PORT -e $RAILS_ENV
web.1:crashed 2013/07/12 00:42:20(~4s ago)
在执行heroku日志--tail时,我会在日志文件中重复以下内容 - :
heroku[web.1]: Starting process with command `bin/rails server -p 16041 -e $RAILS_ENV`
app[web.1]: /usr/bin/env: ruby.exe: No such file or directory
heroku[web.1]: Process exited with status 127
heroku[web.1]: State changed from starting to crashed
heroku[web.1]: Error R99 (Platform error) -> Failed to launch the dyno within 10 seconds
heroku[web.1]: Stopping process with SIGKILL
...
heroku[web.1]: Process exited with status 127
heroku[web.1]: Error R99 (Platform error) -> Failed to launch the dyno within 10 seconds
我在网上看到了我检查.gitignore的内容,看看我的本地bin文件夹的内容是否被排除在外。他们不是。我还看到了编辑bin文件夹内容的建议,并删除了ruby之后的.exe文件 - 我也试过了。
编辑1:我的项目有一个子文件夹,有3个文件包,轨道和rake。这些是以#!/ usr / bin / env ruby开头的唯一文件。我还编辑了第一行来阅读#!/ usr / bin / env ruby * .exe * - 仍然可以看到错误。以下是每个文件的内容:
束
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
load Gem.bin_path('bundler', 'bundle')
轨
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
require 'rails/commands'
耙
#!/usr/bin/env ruby
require_relative '../config/boot'
require 'rake'
Rake.application.run
答案 0 :(得分:0)
在我看来,有些脚本试图通过shebang加载ruby.exe
。
看看yourproject/script/rails
,我的看起来像是在Mac OS 10.6下:
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
APP_PATH = File.expand_path('../../config/application', __FILE__)
require File.expand_path('../../config/boot', __FILE__)
require 'rails/commands'
答案 1 :(得分:0)
猜测:您在Windows上编辑了源文件,因此行结尾是错误的。如果是,Linux加载器将尝试加载“ruby \ n”。
在您的文件上运行dos2unix,重新提交并重新推送到Heroku。它实际上发生在我身上。