【问题标题】:Rails: LoadError - Cannot load such file (requiring a gem)Rails:LoadError - 无法加载此类文件(需要 gem)
【发布时间】:2014-09-29 09:18:51
【问题描述】:

我将active_campaign gem 导入到这样的控制器中(已经包含在我的Gemfile 中并运行bundle install):

require 'active_campaign'

class Website::MyController < ApplicationController
  def create
      client = ::ActiveCampaign::Client.new("url","api-key")
      # ...
  end
end

我收到以下错误:

网站加载错误::MyController#create 无法加载此类文件 -- active_campaign

删除require 'active_campaign'

删除 require 行后,我现在得到:

NameError in Website::MyController#create uninitialized constant ActiveCampaign

我怎样才能让它工作?

【问题讨论】:

  • 我认为你有错字而不是::ActiveCampaign::Client.new("url","api-key") 使用ActiveCampaign::Client.new("url","api-key")
  • 检查您的加载路径(例如输出 $LOAD_PATH rails 控制台)您的 gem 需要位于加载路径的任何目录中,否则如果您不使用绝对路径,require 将失败。
  • 您不必在控制器中明确要求任何 gem。你试过bundle update 吗?
  • @kevdev 我只看到一个巨大的目录列表。我如何判断它是否位于这些目录之一中? (使用 Ubuntu 14.04)
  • @FilipBartuzi 刚刚跑了bundle update。没有任何改变(同样的错误)

标签: ruby-on-rails gem


【解决方案1】:

它是 rails 控制器,因此您没有明确的 require 任何宝石。 Bundler 做到了。 也许您无法访问ActiveCampaign 常量,因为您在启动服务器后添加了gem(因此在bundler 需要所有gem 并允许您访问它们的类之后)。

确保执行以下步骤:

  1. 杀死服务器
  2. 运行bundle updatebundle install
  3. 再次运行服务器

现在,bundler 应该允许您访问 rails 控制器中的所有 active_campaign

【讨论】:

  • 就是这样!我在旁边写了个便条:总是在bundle install之后重启服务器!
猜你喜欢
  • 2012-04-12
  • 2012-03-16
  • 2015-03-03
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多