2014-07-17 52 views
0

我正在爲Rails做一個gem。我需要訪問ApplicationController,因爲我會玩弄它。絕對沒有在線提供關於如何處理gemspec的信息,然後以某種方式設法讓我的寶石中的Rails可訪問。我如何參考創建的寶石中的Rails?

我想象中的目標是最終能夠談Rails的,如:

module Rails 
    module ActionController 
    #code 
    end 
end 
+2

如果您正在爲Rails專門開發一個Gem,我強烈建議您使用'rails plugin new gem_name'生成初始腳手架。有很多關於開發rails插件的信息。 – nicooga

+0

@nicooga好的。我想我一旦得到它的工作方式,我應該專注於使插件成爲寶石,對吧? – David

+0

插件生成器生成gemspec :)。 – nicooga

回答

2

如果專門開發一個寶石爲Rails我強烈建議您將使用Rails插件新gem_name初始支架。有很多關於開發rails插件的信息。

初始結構生成這個樣子的:

gem_name 
    gem_name.gemspec 
    lib/ 
    gem_name.rb 
    gem_name/ 
     version.rb 
     engine.rb # if generated using --mountable 

整個Rails環境變得可用[編輯:你的寶石被加載後]而延伸的ApplicationController可以做這樣的:

# lib/gem_name.rb 
require 'gem_name/controller_extensions' 
module GemName 
end 

# lib/gem_name/controller_extensions.rb 
module GemName::ControllerExtensions 
    # bleh 
end 

# dummy_application/app/application_controller.rb 
class ApplicationController < ActionController::Base 
    include GemName::ControllerExtensions 
end 

看看這個question

+0

所以,如果我有權訪問ApplicationController,我的創業板基本上會完成。然而,用你上面寫的和我的代碼在'module GemName :: ControllerExtensions'中(我適當地用我自己的名字換出了GemName)。雖然我嘗試在提供的測試文件夾內的虛擬應用程序中運行'rails s',但出現錯誤。錯誤是:'/Path/To/Gem/lib/gem/controller_extension.rb:15:in ':未初始化的常量ApplicationController(NameError)'。 – David

+0

我明白了。無論如何,我不必像你那樣把它包括在內?我已經測試,並確認你在那裏的確確有效:) – David