5

将我的应用程序部署到我的 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)>'

我的宝石文件

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

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

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

7 回答 7

12

发生了什么?

当需要定义常量(如ActiveAdminor )的 gem 时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.

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

如何调试这样的问题

  1. 尝试运行 Rails 控制台。bundle exec rails console
  2. 如果失败,请尝试在内部手动 require 有问题的 gemirb并处理其依赖项。
  3. 如果应该定义但没有定义,则需要 gem 或部件。当需要手动 Rubygems 时会抛出描述问题的异常。
  4. 处理异常并修复它们,直到问题得到解决。
于 2015-03-18T19:11:58.013 回答
9

尝试重新启动 Rails 服务器。有类似的问题,重启后就解决了。

于 2013-09-29T17:04:28.293 回答
7

require 'activeadmin'在我的 active_admin.rb 初始化程序中添加了一个,它可以工作!

于 2013-04-22T11:02:20.363 回答
1

可能您可能没有在您的生产环境中运行 bundle install 。

尝试bundle install在生产环境中运行

于 2013-03-14T06:13:24.680 回答
0

@alexBrand 的解决方案对我不起作用。

相反,require 'activeadmin/cancan_adapter'在配置块中添加对我有用。

于 2014-04-01T15:49:36.073 回答
0

只需转到您的routes并删除active_admin routes并运行rails destroy active_admin:install

于 2018-07-25T16:47:24.797 回答
0

从 gem-file 中取消注释 (gem 'therubyracer', platforms: :ruby) gem 然后 bundle..it 工作

于 2016-04-19T06:05:05.100 回答