【问题标题】:Cannot find file or constant when using a gem locally in a Rails app在 Rails 应用程序中本地使用 gem 时找不到文件或常量
【发布时间】:2013-03-02 23:21:55
【问题描述】:

我正在制作一个 gem,它与 rails 应用程序位于同一级别。

我正在尝试在 rails 应用程序中使用 gem,但无法使其工作 - 我尝试使用的常量(在 gem 中定义)由于某种原因无法被 rails 应用程序访问。

我在这里做错了什么?我可以采取哪些步骤来开始调试问题的原因?

在 Rails 控制台中,$:.grep /mygem/ 显示["/Users/zabba/mygem/lib"]

目录结构,包含某些文件的内容:

~/mygem/
  lib/
    mygem/
      some_class.rb
        module Mygem
          class SomeClass
          end 
        end
    mygem.rb
      require 'mygem/some_class'

~/railsapp/
    Gemfile:
      gem 'mygem', path: '../mygem', require: 'mygem'
    app/
      models/
        a_model.rb:
          # require 'mygem' cannot find file
          class AModel
            def hello_world
              SomeClass.new # Cannot find constant
              Mygem::SomeClass.new # Cannot find constant
            end
          end

【问题讨论】:

  • 你能告诉我你把宝石放在哪个文件夹里吗?
  • mygem 的(相关部分)目录结构是什么?我认为你需要有mygem/lib/mygem.rb,并且mygem.rb 应该在那里定义你的类(或者它应该需要定义这些类的文件)。您还可以在a_model.rb 的顶部puts $LOAD_PATH 来查看Bundler 是否已将您的gem 的源放在加载路径上,从而允许您要求mygem
  • AnkitG/ Amit Kumar Gupta,也添加了 gem 文件夹的目录结构。

标签: ruby-on-rails ruby-on-rails-3.2 gem bundler


【解决方案1】:

您可以创建一个文件夹vendor/gems 并将您的gem 复制到其中吗?然后在你的 Gemfile 中

宝石文件

gem 'mygem', :path => "vendor/gems/mygem-0.0.1"

然后bundle install

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2011-10-13
    • 2023-04-05
    • 1970-01-01
    • 2021-10-28
    • 2012-02-10
    • 2018-02-04
    • 2017-11-22
    • 2011-08-14
    相关资源
    最近更新 更多