我刚刚升级到Snow Leopard,包括安装新的XCode,重新编译了Ruby 1.8和MySQL。我的Rails应用程序在更新的环境中运行良好,除了一些依赖于ImageScience / FreeImage的图像处理功能。
我将MacPorts升级到1.8,删除了所有以前安装的端口并在1.8中重新安装它们,我假设它们已经安装了64位版本的端口,包括FreeImage。我还使用以下方法将image_science和RubyInline重新安装为64位gems:
sudo env ARCHFLAGS =“ - arch x86_64”gem install RubyInline image_science
现在,当我在需要图像处理的页面上运行我的应用程序时,我在日志中收到此错误:
加载ImageScienceProcessor时出现问题:dlopen(/ myappname / config / initializers /../tmp / .ruby_inline / Inline_ImageScience_cdab.bundle,9):找不到合适的图像。找到了: /myappname/config/initializers/../tmp/.ruby_inline/Inline_ImageScience_cdab.bundle:mach-o,但架构错误 - / myappname / config / initializers /../tmp / .ruby_inline / Inline_ImageScience_cdab.bundle
有人可以帮我解决这个错误告诉我的事情吗?
答案 0 :(得分:1)
我遇到了同样的问题,即需要为64位(雪豹)环境重新安装一些gem依赖项(尤其是基于C的依赖项)。我使用了ruby控制台。这是我做的:
$ irb
irb> `gem list`.each_line {|line| `sudo env ARCHFLAGS="-arch x86_64" gem install #{line.split.first}`}
答案 1 :(得分:0)
它报告它尝试执行一些本机代码,这些代码采用正确的可执行格式,但是对于错误的架构。这可能意味着gem版本和正在运行的内核之间仍然存在不匹配,或者当您仍然安装了旧操作系统时创建的某些临时代码仍然存在。两种可能的解决方案可能是:
file filename
)。答案 2 :(得分:0)
在完成上面提到的colins peters(重新安装64位宝石的代码)后,我还必须更改我的IDE寻找宝石的目录。由于RubyMine没有为我做,或者我没有找到它,我这样做了:
cd ~/.gem/ruby/1.8/
rm -r gems
ln -s /Library/Ruby/Gems/1.8/gems gems
答案 3 :(得分:0)
我最近遇到了类似的问题,当启动rails控制台或rails服务器时,rails正在抛出“但错误的架构没有找到合适的映像”错误。
在关联的.dylib文件和gem上运行file
通常会返回适用的x86_64版本或包含它的通用版本。最后,我追溯到我正在运行的Ruby的实际版本。 / usr / bin / ruby可执行文件本身只与i386兼容。这真是令人震惊,因为我认为新的xcode和osx 10.7会给我带来64位红宝石。
使用RVM,我安装了另一个ruby实例(同样是1.8.7)。这样做需要我安装一个新的readline实例(我使用自制软件,brew install readline
)并使用rvm install 1.8.7 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/
安装了rvm。
执行此操作后,切换到使用我的新ruby实例(rvm use 1.8.7
),我的所有宝石都消失了(RVM安装以某种方式更改了我的默认gem_path。)gem install rake
,然后是{{1 }},然后gem install bundler
让我振作起来。
简而言之,请确保您的ruby可执行文件与您的ruby / rails软件包内置的指令集版本相匹配。