Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails Unicorn Web服务器赢得';不要从Heroku开始_Ruby On Rails_Heroku_Unicorn - Fatal编程技术网

Ruby on rails Rails Unicorn Web服务器赢得';不要从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/

我无法在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/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行缺失#mark

Heroku最近更改为使用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