这是topic.gemspec
:
Gem::Specification.new do |s|
s.name = 'topic'
s.version = '1.0.0'
s.date = '2012-12-30'
s.files = ["lib/models/topic.rb"]
end
gem位于我的应用程序根目录中。
Gemfile中的:
gem 'topic', :path => '.'
在运行应用程序时,我看不到主题类。
uninitialized constant ApplicationController::Topic
我做错了什么?
感谢。
答案 0 :(得分:1)
你应该确保捆绑包需要你的宝石。你应该有一个文件lib/topic.rb
。添加puts
语句,并在启动应用程序或控制台时检查它是否显示。
作为旁注。我认为您的目录根目录中不应该有gemspec。这将导致您的lib文件夹用于gem和rails应用程序。最好创建一个子文件夹,例如topic/
,然后在里面托管gem。然后,您可以使用以下命令将其添加到Gemfile中:
gem 'topic', :path => './topic'
答案 1 :(得分:0)
我强烈建议你把你的宝石放在Yves提到的自己的目录中。
但是你也可以有其他问题,试试看:
似乎你试图在控制器中使用Topic,也许它不是在外面搜索? :s尝试使用::Topic
代替。 ::告诉我们查看“root”,以便它不会搜索ApplicationController::Topic
如果这不起作用,也许你的gem中没有命名空间。我认为bundle或其他任何需要命名空间(模块)的方式与gem相同,所以你应该有:
# in topic/lib/topic.rb
module Topic
end
#require other parts of the gem
require 'topic/foo'
require 'topic/bar'
希望我能帮忙