[英]Ruby PUMA error: “Unable to load application: NameError: uninitialized constant Service::Resolv”
[英]Puma: Unable to load application: NameError: uninitialized constant
當我嘗試將Rails應用程序部署到Heroku時,出現此錯誤:
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
如果我嘗試在我的開發環境上運行以下代碼,則一切正常:
bundle exec puma -C config/puma.rb
我使用-e production標志在本地計算機上運行了rails,它運行正常,沒有出現錯誤。 僅當我部署到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
我嘗試過的
我現在正在做什么:
我相信我使問題變得過於復雜...對此有何想法?
通過將所有環境變量設置為與Heroku相同的值,嘗試在本地計算機上重現此問題。 或至少設置puma使用的所有變量:
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更改為更高的數字。
對我而言,該應用程序未使用ActiveRecord,但仍然有對其的引用。 因為注釋了require "active_record/railtie"
,所以生產中斷了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.