Създаване на скъпоценен камък с 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. За да се изисква автоматично, трябва да има същото име и регистър на буквите като gem, ts3query.rb. Имате три възможности да коригирате това:

  1. Променете името на файла на ts3query.rb във вашия gem
  2. Добавете файл ts3query.rb към вашия скъпоценен камък и изисквайте „TS3Query“
  3. променете вашия Gemfile на gem "ts3query", "~> 0.2.1", :require => "TS3Query".
person Peter Brown    schedule 16.05.2012