ActiveAdmin未初始化的常量

Ale*_*and 3 ruby-on-rails activeadmin

将应用程序部署到VPS后,出现以下错误.ActiveAdmin在我的本地开发环境中运行良好,但是一旦我使用capistrano部署,看起来好像没有安装gem?

E, [2013-03-14T01:27:04.901577 #24972] ERROR -- : uninitialized constant ActiveAdmin (NameError)
/home/deployer/apps/papaya/releases/20130314052558/config/initializers/active_admin.rb:1:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

我的宝石文件

source 'https://rubygems.org'

gem 'rails', '3.2.11'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'
gem 'bootstrap-sass'
gem 'font-awesome-sass-rails'
# gem 'acts_as_tree', :git => 'git://github.com/amerine/acts_as_tree.git'
gem 'closure_tree'
gem 'kaminari'
gem 'friendly_id'
gem 'slim'
gem 'gmaps4rails'
gem 'devise'
gem 'omniauth'
gem 'oauth2'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'simple_form'
gem 'pg_search'
gem 'stamp'
gem 'acts-as-taggable-on', '~> 2.3.1'
gem 'rmagick'
gem 'carrierwave'
gem 'select2-rails'
# gem 'roo'
gem 'activeadmin'
gem "meta_search",    '>= 1.1.0.pre'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby
  gem 'uglifier', '>= 1.0.3'
  gem 'compass-rails'
  gem 'turbo-sprockets-rails3'
end
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地运行控制台并且需要 activeadmin

deployer@pareto:~/apps/papaya/current$ RAILS_ENV=production bundle exec irb
irb(main):001:0> require 'activeadmin'
=> true
irb(main):002:0>
Run Code Online (Sandbox Code Playgroud)

Poo*_*avi 12

发生了什么?

当需要定义常量的gems时,ActiveAdmin或者ActiveAdmin::Comment,如果由于某种原因在定义该常量期间出现问题,Bundler会将该常量保留为未定义且不会再次引用该异常.

可能的原因

ActiveAdmin取决于ExecJSExecJS需要一个有效的JavaScript运行时.ExecJS在定义ActiveAdmin常量时会抛出这样的错误.

ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只需安装Node.js. sudo apt-get install nodejs

如何调试这样的问题

  1. 尝试运行Rails控制台. bundle exec rails console
  2. 如果失败,请尝试手动要求内部有问题的gem irb并完成其依赖项.
  3. 需要宝石或部分,如果它应该被定义但不是.当需要手动Rubygems抛出描述问题的异常时.
  4. 处理异常并修复它们,直到问题得到解决.


Kar*_*hem 8

尝试重启rails服务器.有类似的问题在重新启动后清除.


Ale*_*and 7

我添加了一个require 'activeadmin'到我的active_admin.rb初始化程序,它的工作原理!