2012-12-30 58 views
0

這是一個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 

寶石位於我的應用程序的根。

中的Gemfile:

gem 'topic', :path => '.' 

當運行應用程序,我看不到主題類。

uninitialized constant ApplicationController::Topic 

我在做什麼錯?

謝謝。

+0

如何寶石位於應用程序的根? –

+0

我只是在玩,寶石已加載,但它的內容不可訪問... –

+0

所以gem的gemspec文件位於應用程序的根目錄。這將無法正常工作。我會推薦玩具來跟隨下一個教程http://railscasts.com/episodes/277-mountable-engines它會給你更多的討論而不僅僅是玩 –

回答

1

你應該確保bundler需要你的寶石。你應該有一個文件lib/topic.rb。添加puts聲明並檢查在啓動應用程序或控制檯時是否顯示它。

作爲一個側面說明。我不認爲你的目錄的根目錄應該有一個gemspec。這將導致您的lib文件夾被用於gem和rails應用程序。最好創建一個子文件夾,例如topic/,然後在其中放置寶石。然後,您可以將其添加到Gemfile中:

gem 'topic', :path => './topic' 
0

我強烈建議您將您的gem放置在它自己的目錄中,正如Yves提到的。

但你也可以有其他的問題,讓我們嘗試一些事情:

它似乎您試圖使用主題控制器裏,也許它不是搜索之外? :s嘗試使用::Topic代替。 ::告訴看「根」,所以它不會搜索ApplicationController::Topic

如果這樣做不起作用,也許你的寶石中沒有命名空間。我覺得束或任何需要命名方式相同的寶石,所以你應該有命名空間(模塊):

# in topic/lib/topic.rb 
module Topic 
end 

#require other parts of the gem 
require 'topic/foo' 
require 'topic/bar' 

希望我能幫助