Создание драгоценного камня с помощью init.rb Rails 3

Я создал новый гем: https://github.com/tntwebsolutions/ts3query.

В моем файле init.rb я 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

Это работает. Но я не могу понять, что мне нужно изменить в моем драгоценном камне, чтобы загрузить require 'TS3Query' при загрузке приложения rails.


person tbraun89    schedule 16.05.2012    source источник


Ответы (2)


init.rb ни у кого нигде не вызывается, переименуйте ваш файл с TS3Query.rb на ts3query.rb и упаковщик загрузит его автоматически для вас .

Избегайте использования имен с символами верхнего и нижнего регистра, Linux и некоторые Mac имеют файловые системы, чувствительные к регистру, и хотя это работает для кого-то, может не работать для всех остальных.

person Maurício Linhares    schedule 16.05.2012

Это из-за того, как вы назвали свой файл TS3Query.rb в lib. Чтобы он автоматически требовался, он должен иметь то же имя и регистр, что и гем, ts3query.rb. У вас есть три варианта исправить это:

  1. Измените имя файла на ts3query.rb в вашем геме.
  2. Добавьте файл ts3query.rb в свой драгоценный камень, и для этого требуется «TS3Query».
  3. измените свой Gemfile на gem "ts3query", "~> 0.2.1", :require => "TS3Query".
person Peter Brown    schedule 16.05.2012