【发布时间】: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