2012-05-16 39 views
3

我創建了一個新的寶石:https://github.com/tntwebsolutions/ts3query創建具有init.rb Rails的寶石3

在我init.rb文件I require主要LIB文件,這應該自動載入的寶石時,Rails應用程序被加載。但是當我啓動服務器時,它接收到init.rb文件未加載。

在我的應用我有這個在我的Gemfile

gem "ts3query", "~> 0.2.1" 

在我application_controller.rb做到這一點:

@query = TS3Query.connect :password => password 

但後來我得到這個錯誤:

uninitialized constant ApplicationController::TS3Query 

如果我這樣做:

require 'TS3Query' 
@query = TS3Query.connect :password => password 

它確實工作。但我無法弄清楚,在加載rails應用程序時,我必須在我的寶石上更改以加載require 'TS3Query'

回答

5

init.rb沒有任何地方叫任何人,從TS3Query.rb文件重命名爲ts3query.rb和打捆將自動加載它。使用名稱以大寫和小寫charaters

避免,Linux和Mac的一些具有區分大小寫的文件系統,雖然它的作品的人可能並不適用於每個人的工作。

1

這是因爲你是如何命名的lib您TS3Query.rb文件。爲了自動獲得所需,它需要與gem,ts3query.rb相同的名稱和大小寫。你有三個選項來解決這個問題:

  1. 更改文件名ts3query.rb在你的寶石
  2. 添加ts3query.rb文件到您的寶石,並有需要「TS3Query」
  3. 變化你的Gemfile爲gem "ts3query", "~> 0.2.1", :require => "TS3Query"