4

新しい宝石を作成しました: https://github.com/tntwebsolutions/ts3query

私のinit.rbファイルではrequire、メインのlibファイルです。これは、レールアプリケーションがロードされるときにgemを自動ロードするはずです。しかし、サーバーを起動すると、init.rbファイルがロードされないことがわかります。

私のアプリケーションでは、これを私の中に持っていますGemfile:

gem "ts3query", "~> 0.2.1"

そして、これを my で行いますapplication_controller.rb:

@query = TS3Query.connect :password => password

しかし、その後、次のエラーが発生します。

uninitialized constant ApplicationController::TS3Query

私がこれを行う場合:

require 'TS3Query'
@query = TS3Query.connect :password => password

それは機能します。require 'TS3Query'しかし、レールアプリケーションがロードされたときにロードするために宝石で何を変更しなければならないのかわかりません。

4

2 に答える 2

5

init.rbはどこからも呼び出されません。ファイルの名前を TS3Query.rb から ts3query.rb に変更するとバンドラーが自動的にロードします。

大文字と小文字を含む名前の使用は避けてください。Linux と一部の Mac には大文字と小文字が区別されるファイル システムがあり、ある人にとっては機能しても、他のすべての人にとっては機能しない可能性があります。

于 2012-05-16T12:12:20.737 に答える
1

これは、lib で TS3Query.rb ファイルに名前を付けた方法が原因です。自動的に必要になるには、gem ts3query.rb と同じ名前と大文字/小文字にする必要があります。これを修正するには、次の 3 つのオプションがあります。

  1. gem でファイル名を ts3query.rb に変更します。
  2. ts3query.rb ファイルを gem に追加し、'TS3Query' を必要とするようにします。
  3. Gemfile を に変更しますgem "ts3query", "~> 0.2.1", :require => "TS3Query"
于 2012-05-16T12:13:31.183 に答える