我有一个工作(并且工作良好)的 ImageScience 安装,它对图像的各种尺寸进行了一些简单的调整,然后将它们复制到不同的目录。一切都非常简单。这个小而简单的例程是一项繁重的任务。更新到 Rails 3 后,这个 rake 任务仍然可以工作(它也会进行一些 AR 插入和音频编码),但是 image_science 要求失败并显示如下消息,
“要求 /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 app root 中的 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 行。
我有点不知道是什么破坏了它,而谷歌似乎并没有放弃任何东西。有谁知道为什么 RubyInline 抱怨?或者为什么这个曾经有效的 Rake 任务突然对 ImageScience 的调用方式感到不满?操作系统是 Ubuntu 10.10,但在 Rails 3 升级之前一切正常。
提前致谢