2

この投稿を見つけました Rails 3.1 コンソールに名前空間を含めますが、機能していないようです。

次の lib/task が定義されており、コマンド ラインから動作します: rake namespace_name:task_name.

タスクを呼び出さずに、コンソール内からmethod_nameメソッドを呼び出す方法は?namespace_name

rails console
namespace_name::task_name
NameError: undefined local variable or method 'namespace_name' for main:Object

irb namespace_name
NameError: undefined local variable or method 'namespace_name' for main:Object

Rails 3.07、Ubuntu で作業しています。

4

2 に答える 2

4

ファイル内で定義されたメソッドを呼び出したい場合は.rake、@Nate が言ったことと同様のことを行いますが、raketask を呼び出す代わりにメソッドを呼び出します。

require 'rake'
Rake.load_rakefile 'lib/tasks/namespace_name.rake'
method_name(arg1, arg2)

名前空間を指定する必要がないのは少し奇妙に感じますが、これを試してみたところ、うまくいきました。

于 2012-05-09T15:21:28.197 に答える
3

2種類の「名前空間」を混同しています。RubyモジュールはRubyコードの「名前空間」のタスクを実行できます。Rake名前空間は、タスクを分類するためにRake内でのみ使用され、モジュール名前空間は作成されません。

リンクしたページは、Rubyモジュールの名前空間でのみ機能します。

RailsコンソールからRakeタスクを呼び出したい場合は、もう少し複雑です...

require 'rake'
Rake.load_rakefile 'lib/tasks/namespace_name.rake'
Rake::Task['namespace_name:task_name'].invoke

または、Railsコンソール内からコマンドラインで呼び出すだけです-

%x[rake namespace_name:task_name]
于 2012-01-24T19:33:09.700 に答える