我创建了一个新的宝石:https://github.com/tntwebsolutions/ts3query
在我的init.rb文件中require
主lib文件,这应该在加载rails应用程序时自动加载gem。但是,当我启动服务器时,它会发现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
确实有效。但我无法弄清楚,当我的gem需要更改以加载rails应用程序时加载require 'TS3Query'
。
答案 0 :(得分:5)
init.rb ,将您的文件从 TS3Query.rb 重命名为 ts3query.rb ,捆绑商将加载它自动为你服务。
避免使用带有大写和小写字符的名称,Linux和某些Mac具有区分大小写的文件系统,虽然它适用于某人可能不适用于其他所有人。
答案 1 :(得分:1)
这是因为您在lib中命名TS3Query.rb文件的方式。为了自动获取它,它需要与gem,ts3query.rb具有相同的名称和大小写。你有三种方法可以解决这个问题:
gem "ts3query", "~> 0.2.1", :require => "TS3Query"
。