2

この投稿が見つかりましたInclude namespace in Rails 3.1 consoleしかし、それは動作していないようです。Rubyコンソールで名前空間メソッドにアクセスするには?

以下のlib /タスクが定義されており、コマンドラインからはrake namespace_name:task_nameで動作します。

method_namenamespace_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での作業。

+1

何をしようとしているのかを100%確信してはいないが、代わりに[rake-sh](https://github.com/jugyo/rake-sh)を使用することを検討してください。 –

答えて

4

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

​​

名前空間を指定する必要はありませんが、私はこれを試してみました。

+0

'Rake.load'と' load'の違いは何ですか? –

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] 
+0

require 'rake'は 'nil'を返します。 Rake:load_rakefileは 'NoMethodError:Rake:Module'の未定義メソッド 'load_rakefile'を投げます。 –

+0

また、ネームスペース内の***メソッド***を呼びたいと思っています。 –

+0

また、あなたが投稿した最初の行はRakeタスクを実行します - 'rake namespace_name:method_name'は本当に' rake namespace:task'です。カバーの下では、これは 'namespace:method'を呼び出すかもしれませんが、これは保証されていません - あなたはレーキタスクファイルの内容を投稿できますか? – Nate

関連する問題