উত্তর:
দেখুন Sinatra, প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী ,
"আমি কীভাবে পরিবর্তনগুলিতে আমার সিনেট্রা অ্যাপটিকে পুনরায় লোড করব?"
প্রথমত, রুবিতে ইন-প্রসেস কোড পুনরায় লোড করা শক্ত এবং এমন একটি সমাধান থাকা যা প্রতিটি দৃশ্যের জন্য কাজ করে প্রযুক্তিগতভাবে অসম্ভব।
যে কারণে আমরা আপনাকে প্রক্রিয়া ছাড়িয়ে পুনরায় লোড করার পরামর্শ দিই।
আপনার যদি ইতিমধ্যে না থাকে তবে প্রথমে আপনাকে পুনরায় ইনস্টল করতে হবে :
$ gem install rerun
এখন আপনি যদি আপনার সিনাত্রা অ্যাপটি এভাবে শুরু করেন:
$ ruby app.rb
পুনরায় লোড করার জন্য আপনাকে যা করতে হবে তা হ'ল পরিবর্তে এটি করুন:
$ rerun 'ruby app.rb'
আপনি যদি উদাহরণস্বরূপ র্যাকআপ ব্যবহার করেন তবে পরিবর্তে নিম্নলিখিতটি করুন:
ra পুনরায় 'রাকআপ'
আপনি ধারণা পেতে।
আপনি যদি এখনও প্রক্রিয়া পুনরায় লোড করতে চান তবে চেক আউট করুন
Sinatra::Reloader
।
rerun
। আপনি ডিফল্ট বিকল্পগুলির সাথে সীমাবদ্ধ নন rerun 'rackup'
। যে কোনও পোর্টে যে কোনও সার্ভার চালানো সম্ভব। এখানে উদাহরণস্বরূপ কীভাবে rerun 'rackup -s puma -p 5678 app/sinatra/config.ru'
রত্ন ইনস্টল করুন সিনাত্রা-রিলোডার
require 'sinatra'
require 'sinatra/reloader'
দ্রষ্টব্য : এটি কেবল সিনট্রা হ্যান্ডলারগুলি (এবং সম্ভবত কিছু সিনেট্রা সার্ভার কনফিগারেশন কমান্ড) পুনরায় লোড করবে, তবে কাস্টম ফাইল নয়, যা আপনাকে ম্যানুয়ালি পুনরায় লোড করতে হবে।
9 বছর পর UPD: দেখে মনে হচ্ছে এটি ব্যবহার অন্যান্য ফাইল পুনরায় লোড করার ইতিমধ্যে সম্ভব also_reload
, dont_reload
এবং after_reload
- https://github.com/sinatra/sinatra/pull/1150
require "./my-file"
সাফল্য ছাড়াই করছি
require
ফাইলটি পুনরায় লোড করে না, যদি এটি ইতিমধ্যে প্রয়োজন ছিল। আপনি load
পরিবর্তে।
server.rb
আমার বাইরের ফাইলটি পুনরায় লোড করার জন্য আমাকে আমার পুনঃ-সঞ্চয় করতে হবে। এটি আমার বাহ্যিক ফাইলটি একা চেক করে না, তাই sever.rb
আমার বাহ্যিক ফাইলে পরিবর্তন করার সময় প্রতিবার আমার নিজের পুনঃ-সঞ্চয় করতে হবে। শটগান এই ক্ষেত্রে আরও ভাল কাজ করছে বলে মনে হচ্ছে, তবে এটি ডাটাবেস সেশনগুলি পুনরায় লোড করার জন্য মনে হচ্ছে।
configure :development do |c| require 'sinatra/reloader' c.also_reload "./lib/*.rb" c.also_reload "./controllers/*.rb" c.also_reload "./init/*.rb" end
আপনি যখন যাত্রী স্ট্যান্ডেলোন দিয়ে অ্যাপ্লিকেশনটি চালান , কেবল একটি tmp/always_restart
ফাইল তৈরি করুন:
$ touch tmp/always_restart.txt
আরও তথ্যের জন্য যাত্রী ডকুমেন্টেশন দেখুন ।
আমি শটগান রত্নটি পছন্দ করি। যদি আপনি একটি মডুলার সিনেট্রা অ্যাপ্লিকেশন ব্যবহার করেন এবং একটি কনফিগার.আর ফাইল থাকে তবে এটি চালানো সহজ।
shotgun config.ru
রত্নটি এখানে দেখুন । এটি মোটামুটি সোজা এগিয়ে এবং কোনও কনফিগারেশন প্রয়োজন।
উইন্ডোজে, আমি এটির জন্য আমার পুনঃসূচনা মণিটি ব্যবহার করছি :
restart ruby my_app.rb
বা, র্যাকআপ সহ:
restart rackup
আরও তথ্যের জন্য এখানে দেখুন , আশা করি আপনি এটি দরকারী বলে মনে করেন।
আপনি গার্ড-র্যাক ব্যবহার করতে পারেন। একটি থেকে উত্ক্ষিপ্ত dblock.org নিবন্ধ :
এটি আপনার জেমফাইলে যুক্ত করুন:
group :development do
gem "guard"
gem "guard-bundler"
gem "guard-rack"
end
তারপরে, Guardfile
এই বিষয়বস্তু দিয়ে আপনার প্রকল্পের মূলে একটি তৈরি করুন :
guard 'bundler' do
watch('Gemfile')
end
guard 'rack' do
watch('Gemfile.lock')
watch(%r{^(config|app|api)/.*})
end
শেষ অবধি, গার্ড চালান, এর মতো: bundle exec guard
এবং rackup
প্রতিবার পুনরায় লোড হবে।