Ruby on rails Rails Unicorn Web服务器赢得';不要从Heroku开始
我无法在Heroku成功启动我的应用程序。以下是基本知识:Ruby on rails Rails Unicorn Web服务器赢得';不要从Heroku开始,ruby-on-rails,heroku,unicorn,Ruby On Rails,Heroku,Unicorn,我无法在Heroku成功启动我的应用程序。以下是基本知识: Ruby 1.9.3p392(当我在我的开发终端中运行Ruby-v时,返回的就是这个,但是Heroku日志似乎指示Ruby 2.0.0) 轨道3.2.13 独角兽网络服务器 Postgresql数据库 我已将我的应用程序部署到Heroku,但收到“应用程序中出现错误,无法提供您的页面。” 以下是Heroku日志中的最终条目: +00:00 app[web.1]: from /app/vendor/bundle/ruby/2.0.0/
- Ruby 1.9.3p392(当我在我的开发终端中运行Ruby-v时,返回的就是这个,但是Heroku日志似乎指示Ruby 2.0.0)
- 轨道3.2.13
- 独角兽网络服务器
- Postgresql数据库
+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>'
+00:00 heroku[web.1]: Process exited with status 1
+00:00 heroku[web.1]: State changed from starting to crashed
我认为问题可能来自我的app/config/application.rb中的这一行
ENV.update YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
这一行在dev中用于从application.yml文件读取环境变量。但是,出于安全考虑,我从repo中忽略了它,并且可以看到Heroku日志抱怨找不到该文件。对于生产,我已通过以下方式在Heroku设置环境变量:
heroku config:add SECRET_TOKEN=a_really_long_number
这是我的app/config/unicorn.rb
# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
这是我的程序文件
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
我的app/config/unicorn.rb和Procfile设置都来自
根据IRC的一些指导,我安装了Figaro,但遗憾的是,这并没有解决问题
如果您想查看完整的应用程序,请登录:
如果您对可能出现的问题或我如何进一步排除故障有指导,我将不胜感激。谢谢。你的分析很到位。我刚刚拉了你的代码,做了一些调整,现在已经在Heroku上开始了 我唯一的改变
config/application.rb
-将第12行和第13行移动到config/environments/development.rb
-如果您使用application.yml作为开发环境变量,则保持这种方式。另一个选择是在最后使用if Rails.env.development?
使第13行有条件地适应您的开发环境
config/environments/production.rb
-第33行缺失#markHeroku最近更改为使用Ruby 2.0.0作为新应用程序的默认设置。要控制此操作,请将ruby'1.9.3'
添加到您的Gemfile中。仅供参考:您有一个解决这些问题的pull请求:约翰-非常感谢你。你的治疗对我也很有效,非常好。(我还需要运行heroku run rake db:migrate)。@John Beynon,如果此Github存储库被删除,请指定您更改的行的内容是什么?链接到@JohnBeynon的更改,以便他的答案有意义:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb