看不到自定义本地宝石

时间:2012-12-30 12:38:37

标签: ruby ruby-on-rails-3 rubygems

这是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

我做错了什么?

感谢。

2 个答案:

答案 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'

希望我能帮忙