我正在爲Rails做一個gem。我需要訪問ApplicationController,因爲我會玩弄它。絕對沒有在線提供關於如何處理gemspec
的信息,然後以某種方式設法讓我的寶石中的Rails可訪問。我如何參考創建的寶石中的Rails?
我想象中的目標是最終能夠談Rails的,如:
module Rails
module ActionController
#code
end
end
我正在爲Rails做一個gem。我需要訪問ApplicationController,因爲我會玩弄它。絕對沒有在線提供關於如何處理gemspec
的信息,然後以某種方式設法讓我的寶石中的Rails可訪問。我如何參考創建的寶石中的Rails?
我想象中的目標是最終能夠談Rails的,如:
module Rails
module ActionController
#code
end
end
如果專門開發一個寶石爲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。
所以,如果我有權訪問ApplicationController,我的創業板基本上會完成。然而,用你上面寫的和我的代碼在'module GemName :: ControllerExtensions'中(我適當地用我自己的名字換出了GemName)。雖然我嘗試在提供的測試文件夾內的虛擬應用程序中運行'rails s',但出現錯誤。錯誤是:'/Path/To/Gem/lib/gem/controller_extension.rb:15:in
我明白了。無論如何,我不必像你那樣把它包括在內?我已經測試,並確認你在那裏的確確有效:) – David
如果您正在爲Rails專門開發一個Gem,我強烈建議您使用'rails plugin new gem_name'生成初始腳手架。有很多關於開發rails插件的信息。 – nicooga
@nicooga好的。我想我一旦得到它的工作方式,我應該專注於使插件成爲寶石,對吧? – David
插件生成器生成gemspec :)。 – nicooga