রেলস কনসোল: পুনরায় লোড করুন! মডেল ফাইল পরিবর্তন প্রতিফলিত না? সম্ভাব্য কারণ কী হতে পারে?


95

আগে এটা ঠিকঠাক কাজ ছিল। আমি সামান্য বিট কনফিগার খেলছি। সুতরাং হতে পারে আমি অজান্তে কিছু কনফিগার পরিবর্তন করেছি।

এখানে পরিবেশ / উন্নয়ন.rb এর কনফিগারেশন রয়েছে

  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_view.debug_rjs             = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # migration prefix with sequence #s
  config.active_record.timestamped_migrations = false

  #time zone
  config.time_zone = 'UTC'

এখানে application.rb এর কনফিগার বিভাগ রয়েছে

 # Configure the default encoding used in templates for Ruby 1.9.
 config.encoding = "utf-8"

 # Configure sensitive parameters which will be filtered from the log file.
 config.filter_parameters += [:password]

 config.active_record.schema_format = :sql

আমি আবার চালাচ্ছি! রেল কনসোল এ সত্য ফিরে

উত্তর:


181

reload!শুধুমাত্র কনসোল পরিবেশে সর্বশেষতম কোডটি পুনরায় লোড করে। এটি বিদ্যমান বস্তুগুলিকে পুনরায় আরম্ভ করে না।

এর অর্থ যদি আপনি ইতিমধ্যে কোনও বস্তু ইনস্ট্যান্ট করে রেখেছেন তবে তাদের বৈশিষ্ট্যগুলি আপডেট হবে না - সদ্য প্রবর্তিত বৈধতা সহ। তবে, আপনি যদি কোনও নতুন অবজেক্ট তৈরি করেন তবে এর বৈশিষ্ট্যগুলি (এবং বৈধকরণগুলি) পুনরায় লোড কোডটি প্রতিফলিত করবে। আরও এখানে


কাস্টম বৈধতা সম্পর্কে কি? আমি কিছু পদ্ধতি সংজ্ঞায়িত করেছি এবং বৈধতার সাথে নিবন্ধিত করেছি। যখন আমি বৈধতা যুক্তি পরিবর্তন করি, এটি পুনরায় লোডে প্রতিফলিত হয় না !.
ম্যাডি.শিক

4
আপনি যখন বস্তুকে পুনরায় সূচনা করবেন তখন এটি প্রতিফলিত হবে।
নজর হুসেন

20

আপনি কি ডাটাবেস থেকে বস্তুটি পুনরায় লোড করছেন?

উদাহরণ স্বরূপ:

>> a = User.last
=> #<User id: 16, email: "asdfadsf@sdfdsf.com">
>> reload!
Reloading...
=> true

'এ' আপনার মডেলটিতে কোনও পরিবর্তনকে প্রতিবিম্বিত করবে না যতক্ষণ না আপনি এটি ডিবি থেকে পুনরায় লোড করেন।


4
দ্রষ্টব্য - কোনও বস্তুর কোনও পদ্ধতিতে অ্যাক্সেস করার পরেও এটি সত্য। উদাহরণস্বরূপ, আপনি যদি ক্লাস পদ্ধতি foo () এর সংজ্ঞাটি পরিবর্তন করেন তবে কনসোলে a.foo নতুন সংজ্ঞাটি ব্যবহার করবে না আপনি যদি প্রথমে একটি পুনরায় লোড না করেন।
jpw
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.