【问题标题】:Why do I get cannot load such file?为什么我无法加载此类文件?
【发布时间】:2015-01-01 23:42:18
【问题描述】:

我需要使用 ffi gem 来访问本机扩展。 当我在一个简单的 ruby​​ 脚本中需要 'ffi' 时,它可以正常工作。但是当我在我的 Rails 应用程序中需要 ffi 时,我得到:无法加载此类文件 -- ffi 为什么?

gem env 显示:

RubyGems 环境:

  • RUBYGEMS 版本:2.2.2
  • RUBY 版本:1.9.3(2012-04-20 补丁级别 194)[x86_64-linux]
  • 安装目录:/usr/lib/ruby/gems/1.9.1
  • RUBY 可执行文件:/usr/bin/ruby1.9.1
  • 可执行目录:/usr/bin
  • 规范缓存目录:/home/adminuser/.gem/specs
  • RUBYGEMS 平台:
    • 红宝石
    • x86_64-linux
    • 宝石路径:
      • /usr/lib/ruby/gems/1.9.1
      • /home/adminuser/.gem/ruby/1.9.1

【问题讨论】:

  • 打包器中是否安装了 gem?

标签: ruby-on-rails ruby gem


【解决方案1】:

在您的 Gemfile 中添加这一行:

gem 'ffi'

下一步:

$ bundle install

现在:

require 'ffi'

您需要在 Gemfile 中指定要使用的 gem,以便通过 bundler 将其用于 Rails 项目。

更新:我建议您查看How does bundler bundlehow bundler require gems 和这个railscast

【讨论】:

  • 好的,但是为什么呢?为什么 ruby​​ 脚本能够加载 gem 而 Rails 不能?
  • 我想我在您的第二个链接中找到了答案:“为了防止 Kernel#require 进一步查看其他已安装的 gem,Bundler 还通过恢复到原始实现来禁用修补的 Kernel#require 。”对吗?
  • Bundler 将 gems 及其版本限制在 Gemfile 中定义的提到的列表中,这是的,限制 Kernel#require 以在提供的 gems 范围之外进一步查找。对你有帮助吗?
猜你喜欢
  • 2021-08-26
  • 2013-03-23
  • 2015-08-16
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2016-11-20
  • 2023-03-10
  • 2015-11-20
相关资源
最近更新 更多