私の状況を説明します。
ここに私のRails application:
lib/my_module.rb
require 'my_module/my_file'
module My_module
end
lib/my_module/my_file.rb
class Tweetag::Collector
(...)
end
Ruby config/jobs /に入れたスクリプトを作成しました
このファイルにmy_file.rbファイルをどのように要求するのか、本当に理解できません。
require '../../my_module/my_file.rb'
「必要」になります:そのようなファイルをロードできません
「my_module」が必要なだけで同じエラーが発生します。これは、コントローラーで行うことです...
私に説明するためにここに誰か?どうもありがとう
Lib folder
の下にすべてを自動挿入して、これらの問題を回避できます。
config/application.rb
にファイルを入力してください
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
特定のファイルのみを必要とする場合は、Rails root
for example: --
lib/plan.rb
module Plan
...some code...
end
あるモデルでのみ必要な場合は、app/models/user.rbと言います。
ユーザーモデルで行う
require "#{Rails.root}/lib/plan"
class User < ActiveRecord::Base
include Plan
end
どこでも利用できるようにしたい場合
1つの解決策は@VecchiaSpugnaによって与えられます
または、config/initializersフォルダーにRubyファイルを作成できます
そこにあるすべてのファイルを1つずつ必要とします
OR
try this
require '../../my_module/my_file'
instead of
require '../../my_module/my_file.rb'
Requireでファイルの拡張子を指定する必要はありません。
2つの解決策があると思います。
1)libパスを検索パスに追加します。 Rubyの場合:
$:.unshift('../../my_module/lib')
その後、require 'my_module.rb'
Vecchia Spugna answer は、私のRuby回答のRailsバージョンです。 (私はRailsに精通していません)。
2)別の解決策:
lib/my_module.rb
には、my_file
が必要です。このファイルはmy_module.rb
?に関連して配置されています次にrequire_relative
を使用します。
require_relative './my_module/my_file'
Require_relativeと同様に、
# inside lib/my_module.rb
require File.expand_path('./my_module/my_file', File.dirname(__FILE__))
これにより、現在のファイルディレクトリのパスが展開され、必要な相対ファイルパスが追加されます。
解決策がほとんどなかったので、これを理解するのに永遠に時間がかかったので、ただ声をかけてください。
•単純な古いrequireを使用する必要がありました。 _config/application.rb
_ファイルに入れました。
patching_file_path = File.expand_path("./lib", Dir.pwd) Dir[patching_file_path+'/*.rb'].each {|file| require file }
•必要なファイルに一時的な_puts "I'm Working!
_を入れて、コンソールが実際にロードされているかどうかを確認できるようにします。
•また、スプリングローダーを使用している場合は、コンソールを起動する前に、Railsコンソールを起動する前に端末で_bin/spring stop
_を実行する必要があります。新しいファイル。