【问题标题】:Gem not available in Rails app but works fine in Rails console (IMGKit)Gem 在 Rails 应用程序中不可用,但在 Rails 控制台(IMGKit)中工作正常
【发布时间】:2012-06-30 02:01:43
【问题描述】:

尝试在我的 Rails 控制器之一中创建 IMGKit 实例:

def wkhtmltoimage
  ...
  kit = IMGKit.new("http://#{request.host_with_port}/?auth_token=" + token)
  img = kit.to_img(:jpg)
  file = kit.to_file(Rails.root + "public/uploads/testimage.jpg")
  ...
end

当我加载页面时,我得到了这个:

NameError in PagesController#wkhtmltoimage

uninitialized constant PagesController::IMGKit

在我的 Gemfile 中,我包含了正确的 gem:

gem 'imgkit'

Bundler 可以很好地安装它。当我运行 Rails 控制台时,它就在那里并且可以工作:

1.9.3p194 :005 > IMGKit.new("http://google.com")
 => #<IMGKit:0x007fb08d16a658 @source=http://google.com, @stylesheets=[], @options={}> 
1.9.3p194 :006 > 

为什么 IMGKit 类可以在 Rails 控制台中工作,但不能在应用程序中工作?有什么建议么?使用 RVM、Pow、Rails 3.2.6(以及所有其他 gem 都可以在该设置下正常工作)。

编辑答案

重启 pow 服务器似乎已经解决了这个问题。只需放入终端:

touch tmp/restart.txt

应该可以的。

【问题讨论】:

  • Gemfile 更改时 pow 是否会自动重新加载应用程序? 'gem :imgkit' 行是 Gemfile 中任何组的一部分吗?如果你在 wkhtmltoimage 方法中说 '::IMGKit.new' 会更好吗?
  • @lain: 我相信重启 pow 解决了这个问题。无论如何,它今天早上正在工作(我确实重新启动了)。感谢您的建议!请随意将其作为答案,我会将其标记为正确答案。

标签: ruby-on-rails ruby rvm bundler


【解决方案1】:

重启 pow 服务器似乎已经解决了这个问题。只需放入终端:

touch tmp/restart.txt

应该可以的。

【讨论】:

    【解决方案2】:

    您已将套件设置为控制器中的局部变量。您是否尝试过将其设置为控制器中的实例变量 (@kit)?

    【讨论】:

    • 感谢您的回复,谢谢。问题仍然存在于实例变量中。但是,完全重新启动服务器似乎已经奏效。我将编辑我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2011-05-11
    • 2017-09-12
    • 1970-01-01
    相关资源
    最近更新 更多