2017-02-27 79 views
1

當我試圖部署Rails應用程序的Heroku,我收到此錯誤:如果我嘗試運行彪馬:無法加載應用程序:NameError:未初始化不斷

Puma starting in single mode... 
2017-02-27T15:08:03.908788+00:00 app[web.1]: * Version 3.7.0 (ruby 2.3.1-p112), codename: Snowy Sagebrush 
2017-02-27T15:08:03.908789+00:00 app[web.1]: * Min threads: 5, max threads: 5 
2017-02-27T15:08:03.908790+00:00 app[web.1]: * Environment: production 
2017-02-27T15:08:05.942041+00:00 app[web.1]: ! Unable to load application: NameError: uninitialized constant Api::V1::AController 
2017-02-27T15:08:05.942133+00:00 app[web.1]: bundler: failed to load command: puma (/app/vendor/bundle/ruby/2.3.0/bin/puma) 
2017-02-27T15:08:05.942266+00:00 app[web.1]: NameError: uninitialized constant Api::V1::AController 

Here is the link to the full log

在我的開發環境下面的代碼,一切都運行得很好:

bundle exec puma -C config/puma.rb 

我跑使用-e生產標誌我在本地機器上軌,它運行正常,沒有出現錯誤。只有當我部署到Heroku時纔會發生這種情況。

puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2) 
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5) 
threads threads_count, threads_count 

preload_app! 

rackup  DefaultRackup 
port  ENV['PORT']  || 3000 
environment ENV['RACK_ENV'] || 'development' 

on_worker_boot do 
    ActiveRecord::Base.establish_connection 
end 

我已經試過:

  1. 創建在Heroku上一個新實例只是要確定有沒有與當前實例的問題
  2. 測試Puma的多個版本
  3. 檢查development.rbproduction.rb,看看有什麼不一樣

我在做什麼現在:

  1. 經歷每一次提交發現的應用是什麼改變了,並設法找到該應用程序
  2. 的原因

我相信我正在過度複雜的問題......對此有何看法?

回答

0

嘗試在本地機器上通過將所有環境變量設置爲與Heroku上相同的值來重現此問題。或至少設置彪馬使用的所有變量:

RAILS_ENV=production RACK_ENV=production WEB_CONCURRENCY=1 RAILS_MAX_THREADS=5 bundle exec puma -C config/puma.rb 

此外,我已經注意到,您正在使用線程。這是故意的嗎?我的意思是紅寶石生態系統並不以線程安全着稱。嘗試將RAILS_MAX_THREADS更改爲1,並將WEB_CONCURRENCY更改爲更高的數字。

相關問題