4

我创建了一个新的 gem: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 上更改什么才能加载require 'TS3Query'rails 应用程序的加载时间。

4

2 回答 2

5

任何人都不会在任何地方调用init.rb,将文件从TS3Query.rb重命名为ts3query.rb,bundler 会自动为您加载它。

避免使用带有大小写字符的名称,Linux 和某些 Mac 具有区分大小写的文件系统,虽然它适用于某些人,但可能不适用于其他所有人。

于 2012-05-16T12:12:20.737 回答
1

这是因为您在 lib 中命名 TS3Query.rb 文件的方式。要使其自动获得必需,它需要与 gem ts3query.rb 具有相同的名称和大小写。你有三个选项来解决这个问题:

  1. 在 gem 中将文件名更改为 ts3query.rb
  2. 将 ts3query.rb 文件添加到您的 gem 中,并且需要 'TS3Query'
  3. 将您的 Gemfile 更改为gem "ts3query", "~> 0.2.1", :require => "TS3Query".
于 2012-05-16T12:13:31.183 回答