我认为我的生产中的rails设置存在配置问题。
我有一个美洲狮工作正常没有任何问题(连接到数据库,加载模型等),以前能够使用控制台(我遇到了这个[bug] [https://github.com/rails/rails/issues/19256]但是解决了它通过填写database.yml)
当我尝试打开控制台执行少量操作时,找不到任何模型类。
✗ bundle exec rails console production
Running via Spring preloader in process 18313
Loading production environment (Rails 5.1.4)
irb(main):001:0> User.count
NameError: uninitialized constant User
from (irb):1
irb(main):002:0>
关于SO的类似问题建议运行ActiveRecord::Base.subclasses
并最终Rails.application.eager_load!
当我尝试运行Rails.application.eager_load!
时,我得到了无意义的常量错误
irb(main):005:0> Rails.application.eager_load!
NameError: uninitialized constant ApplicationController
Did you mean? ApplicationCable
from app/controllers/accounts_controller.rb:1:in `<top (required)>'
from (irb):5
所以我猜我的控制台现在已经丢失了,并且没有正确加载项目源。
我该如何解决这种情况?
编辑2018-02-15 :我将工作站连接到prod环境以使用控制台。这首先起作用,控制台表现正常。几次出现相同的问题。完成spring stop
之后,我又能够使用本地工作站在prod中打开控制台。
有趣的事实:这在开发环境中永远不会发生,尽管Spring在这个环境中运行了一个app。
事实证明,春天也在生产中运行,尽管春天的宝石只在开发组中。 (见下文)
的Gemfile
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
gem 'rails', '~> 5.1.4'
gem 'puma', '~> 3.7'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'therubyracer', platforms: :ruby
gem 'coffee-rails', '~> 4.2'
gem 'jbuilder', '~> 2.5'
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'capybara', '~> 2.13'
gem 'selenium-webdriver'
gem 'rails-erd', require: false, group: :development
end
group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
gem 'pry'
gem 'pry-byebug'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'devise'
gem 'devise-i18n'
gem 'cancancan', '~> 2.0'
gem 'rolify'
gem 'redis', '~> 3.2'
group :production do
gem "sidekiq"
gem "sentry-raven"
end
gem 'pg'
gem "paperclip", "~> 5.0.0"
gem 'i18n-country-translations'
gem 'rails-i18n', '~> 5.0.0'
gem 'i18n_alchemy'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
答案 0 :(得分:0)
如果您是通过Docker部署的,请确保在运行命令中使用-ti
前缀,例如:
docker exec -ti 4d318d505e9f rails c production