1

Rails プラグインの作成に問題があります。Mplug と呼びましょう。プラグインはほとんどレーキ タスクにすぎませんが、レーキ タスクが使用するライブラリを備えています。

問題はファイルを要求することです。これがrakeタスクだとしましょう:

namespace :mplug do
  task :create do
    Mplug::Indexer.new
  end
end

これは定数 Mplug を認識しません。だから私はそれを要求する必要があると思いました。

require 'mplug'

namespace :mplug do
  task :create do
    Mplug::Indexer.new
  end
end

しかし、私はこのメッセージを受け取ります。

no such file to load -- mplug

じゃあ良いよ。それでは、プラグインへのパスを指定してみましょう。

require 'vendor/plugins/mplug/lib/mplug'

namespace :mplug do
  task :create do
    Mplug::Indexer.new
  end
end

これは実際に機能します。ただし、これは悪い方法だと思いますが、レール ルートにいるかのように、プラグインでファイルを要求する必要があります。例えば:

module Mplug
end

require 'mplug/indexer'

次のようにする必要があります。

module Mplug
end

require 'vendor/plugins/mplug/lib/mplug/indexer'

もちろんやりたくないこと。

これを解決するきちんとした方法はありますか?

ありがとう!

4

2 に答える 2

0

1 つのオプションは、FILE定数を使用して、現在のファイルに相対的な残りのパスを指定することです。

require File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib', 'mplug')

(rake タスク ファイルが plugin_root/tasks にある場合...)

于 2009-12-08T03:19:52.980 に答える