Heroku dyno与消息app [web.1]崩溃:/ usr / bin / env:ruby.exe:没有这样的文件或目录

时间:2013-07-13 03:06:08

标签: ruby-on-rails deployment heroku heroku-toolbelt

我有一个基本的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

2 个答案:

答案 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。它实际上发生在我身上。