/lib
বিকাশের সময় আমার ডিরেক্টরিতে কোডটি অটোল্যাড করতে আমি একটি প্রারম্ভকরে নিম্নলিখিত লাইনটি ব্যবহার করি :
কনফিগ / initializers / custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
( ails টি কুইলটিপ থেকে: বিকাশ মোডে লিব ফোল্ডারগুলি স্বয়ংক্রিয়ভাবে পুনরায় লোড করুন )
এটি দুর্দান্ত কাজ করে তবে উত্পাদনে এটি ব্যবহার করা খুব অকার্যকর- প্রতিটি অনুরোধে ল্যাব লোড করার পরিবর্তে, আমি কেবল এগুলি শুরুতে লোড করতে চাই। এটি করতে কীভাবে তা বর্ণনা করে একই ব্লগে আরও একটি নিবন্ধ রয়েছে :
কনফিগ / application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
যাইহোক, আমি যখন এটিতে স্যুইচ করি, এমনকি বিকাশেও, lib ফাংশনগুলি ব্যবহার করার চেষ্টা করার সময় আমি NoMethodErferences পাই।
আমার লিব ফাইলগুলির একটি উদাহরণ:
lib / অনুপস্থিত extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
কলিং Time.milli_stamp
NoMethodError নিক্ষেপ করবে
আমি বুঝতে পারি যে অন্যরাও এসও তে অনুরূপ প্রশ্নের জবাব দিয়েছেন তবে তারা সকলেই নামকরণের সম্মেলন এবং অন্যান্য বিষয়গুলির সাথে মোকাবিলা করে বলে মনে হচ্ছে যা সম্পর্কে আমার আগে চিন্তা করতে হবে না- আমার লিব ক্লাস ইতিমধ্যে প্রতি অনুরোধ লোডিংয়ের জন্য কাজ করেছে, আমি কেবল এটি পরিবর্তন করতে চাই per- করার প্রারম্ভে লোড হচ্ছে। এটি করার সঠিক উপায় কী?