我有一个工作正常的(并且工作得很好)ImageScience安装程序,它对图像的各个尺寸进行了一些简单的调整大小,然后将它们复制到不同的目录中。一切都很简单。这个小而简单的例程是一项艰巨的任务。更新到Rails 3后,此rake任务仍然可以工作(它也执行一些AR插入和音频编码),但是image_science require失败,并显示如下消息:
“要求/home//.ruby_inline/Inline_ImageScience_cdab.so失败”
我已经排除了安装Duff ImageScience的可能性,因为我可以进入IRB并对ImageScience进行一些简单的调用并制作缩略图。如果我将任何提及需要'image_science'或ImageScience例程的注释都注释掉,其余的rake任务将像以前一样工作。
失败时rake的输出是这样,
/var/lib/gems/1.8/gems/RubyInline-3.8.6/lib/inline.rb:513:in `load'
/var/lib/gems/1.8/gems/RubyInline-3.8.6/lib/inline.rb:829:in `inline'
/var/lib/gems/1.8/gems/image_science-1.2.1/lib/image_science.rb:90
...
<active_support complaints >
...
/home/<user>/RailsApps/marlow/lib/tasks/flac_import.rake:2
...
<rails complaints>
...
/home/<user>/RailsApps/marlow/Rakefile:7
...
<standard complaints to end>
在rails应用根目录中的Rakefile是标准的Rails 3 Rakefile,就像这样,
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'
Marlow::Application.load_tasks
最后一行是第7行。
我对什么是突破感到困惑,而Google似乎并没有丢下任何东西。有谁知道RubyInline为什么抱怨?还是为什么这个曾经工作的Rake任务突然不满意ImageScience的调用方式?操作系统是Ubuntu 10.10,但在Rails 3升级之前都可以使用。
提前致谢
最佳答案
这似乎确实是问题所在,但是通过细读carlhuda issues 431处的注释,我发现有一个更简单的修复程序
我遇到了同样的问题,它对我有用。只需将require
方法更改为Kernel.require
。
之后,无需在代码中添加require image_science
语句。
关于ruby-on-rails - ImageScience在更新Rails 3时中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4280878/