不能在rails控制器中使用gem

时间:2014-06-22 20:58:32

标签: ruby-on-rails-4 soundcloud ruby-on-rails-plugins

我是一个铁杆菜鸟,所以任何帮助都会受到赞赏。

我通过以下方式安装了soundcloud gem:

$  gem install soundcloud

然后我将gem添加到我的Gemfile中,并运行rails bundle install以确保它包含在我的项目中:

$  bundle install

这将输出我项目所有包含的宝石的列表。最终的一个项目是soundcloud gem:

$  bundle install
...
Using sdoc 0.4.0
Using soundcloud 0.3.2
Using spring 1.1.2
...
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

现在,当我在应用程序目录中运行rails控制台时,我能够按预期访问soundcloud模块:

$ rails console
Loading development environment (Rails 4.1.0)
2.1.1 :001 > SoundCloud
 => SoundCloud
2.1.1 :002 > client = SoundCloud.new(:client_id => 'b2dab282f8bb29467dcb4f5b27f7c075')
 => #<SoundCloud::Client:0x8972f40 ... (successful results here)

但是当我尝试在控制器或视图中使用soundcloud模块时,我得到一个包含错误的页面:

uninitialized constant SlideshowController::SoundCloud

以下是我尝试使用soundcloud模块的代码:

helper_method :sc_get_src

def sc_get_src
    @sc_client ||= SoundCloud.new(:client_id => 'b2dab282f8bb29467dcb4f5b27f7c075')
    sound = @sc_client.get('/resolve', :url => @slideshow.sound)
    return sound.uri
end

在文档页面here上,示例中的第一行是:

require 'soundcloud'

但是,如果我在使用soundcloud模块之前添加它(在控制器,模型,视图等中),则会抛出此错误:

cannot load such file -- soundcloud

请帮忙。我需要采取另一个步骤将模块包含在我的应用程序中吗?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

这些问题通常可以通过重启rails服务器来解决。例如。对于乘客:

$ touch tmp/restart.txt

原因是,gem依赖项仅在应用程序的启动阶段加载