2012-05-16 51 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"