ruby on rails - Rails ডাটাবেস উপর একটি রুবি purge বা recreate




ruby-on-rails ruby-on-rails-3 (12)

Rails 4, সব প্রয়োজন হয়

$ rake db:schema:load

এটি আপনার ডিবিতে সমগ্র সামগ্রী মুছে ফেলবে এবং আপনার স্কিমা.আরবি ফাইল থেকে স্কিমাটি পুনঃস্থাপন করবে, সমস্ত একত্রিতকরণগুলি একের পর এক প্রয়োগ না করেই।

আমি তথ্য পূর্ণ Rails ডাটাবেস উপর একটি dev রুবি আছে। আমি সবকিছু মুছে ফেলতে এবং ডাটাবেস পুনর্নির্মাণ করতে চান। আমি ভালো কিছু ব্যবহার করার চিন্তা করছি:

rake db:recreate

এটা কি সম্ভব?


আপডেট: রেল 5 এর আবির্ভাবের সাথে, এই কমান্ডটি এই কমান্ডের মাধ্যমে অ্যাক্সেসযোগ্য হবে:

রেলের ডিবি: purge db: ডিবি তৈরি করুন: RAILS_ENV = পরীক্ষা স্থানান্তরিত করুন

নতুন রেলের 4.2 রিলিজ হিসাবে আপনি এখন চালাতে পারেন:

rake db:purge 

উত্স: commit

# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
  task :purge => [:load_config] do
    ActiveRecord::Tasks::DatabaseTasks.purge_current
  end

উপরে উল্লিখিত হিসাবে এটি একসাথে ব্যবহার করা যেতে পারে:

rake db:purge db:create db:migrate RAILS_ENV=test

আপনি নিজে করতে পারেন:

rake db:drop
rake db:create
rake db:migrate

অথবা শুধু rake db:reset , যা উপরের পদক্ষেপগুলি চালাবে তবে আপনার db/seeds.rb ফাইল db/seeds.rb

একটি যোগ schema.rb যে rake db:reset আপনার schema.rb ফাইলগুলি পুনরায় চালানোর বিরোধিতা করে সরাসরি আপনার schema.rb ফাইল থেকে rake db:reset লোড করুন।

আপনি তথ্য সব ক্ষেত্রে দূরে উড়ে যায়।


আপনি নিম্নলিখিত কমান্ড লাইন ব্যবহার করতে পারেন:

rake db:drop db:create db:migrate db:seed db:test:clone

আমি আজ আমার রেল স্কিমা বেশ কয়েকটি পরিবর্তন করেছেন। আমি অনুমান করলাম আমি একটি অনুক্রমের অতিরিক্ত দুটি মডেলের প্রয়োজন এবং অন্য কিছু মুছে ফেলতে হবে। মডেল এবং কন্ট্রোলার প্রয়োজন অনেক ছোট পরিবর্তন ছিল।

আমি দুটি নতুন মডেল যোগ এবং ব্যবহার করে, তাদের তৈরি:

rake db:migrate

তারপর আমি schema.rb ফাইল সম্পাদনা। আমি পুরোনো মডেলগুলিকে ম্যানুয়ালি মুছে ফেলেছিলাম যা আর প্রয়োজন ছিল না, প্রয়োজনীয় হিসাবে বিদেশী কী ক্ষেত্রটি পরিবর্তন করে এবং এটি আমার কাছে আরও পরিষ্কার করার জন্য এটি সামান্য সামঞ্জস্য করে। আমি সব মাইগ্রেশন মুছে ফেলা , এবং তারপর মাধ্যমে বিল্ড পুনরায় চালানো:

rake db:reset

এটা পুরোপুরি কাজ। সমস্ত তথ্য অবশ্যই, পুনরায় লোড করা হয়েছে। রেলগুলি বুঝতে পেরেছে যে মাইগ্রেশন মুছে ফেলা হয়েছে এবং উচ্চ-পানির চিহ্ন পুনরায় সেট করা হয়েছে:

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])

আমি এই কমান্ড চালানোর জন্য সবচেয়ে ভাল উপায় মনে করি:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed

আমি টার্মিনাল মধ্যে নিম্নলিখিত এক মাছ ধরার নৌকা ব্যবহার করুন।

$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare

আমি একটি শেল উপনাম হিসাবে এই রাখা এবং নামকরণ এটি নামকরণ

এখন পর্যন্ত, আপনি সহজে "চেইন" Rails কাজ করতে পারেন:

$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+

একটি নির্দিষ্ট ডাটাবেস ড্রপ করতে, আপনি রেল কনসোল এ এটি করতে পারেন:

$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit

এবং তারপর আবার ডি বি মাইগ্রেট

$bundle exec rake db:migrate 

কারণ ডেভেলপমেন্টে, আপনি সর্বদা ডেটাবেস পুনরায় তৈরি করতে চান, আপনি আপনার lib / tasks ফোল্ডারে একটি রেকে টাস্ক সংজ্ঞায়িত করতে পারেন।

  namespace :db do
      task :all => [:environment, :drop, :create, :migrate] do
   end 
end

এবং টার্মিনাল আপনি চালানো হবে

rake db:all

এটা আপনার ডাটাবেস পুনর্নির্মাণ করা হবে


মত ব্যবহার করুন

rake db:drop db:create db:migrate db:seed

সব এক লাইন। পরিবেশ দ্রুত এবং পুনঃলোড করা হয় না এই দ্রুত।

ডিবি: ড্রপ - ডাটাবেস ড্রপ হবে।

ডিবি: তৈরি - ডাটাবেস তৈরি করবে (হোস্ট / ডিবি / পাসওয়ার্ড কনফিগারেশন / ডাটাবেস.এমএমএল থেকে নেওয়া হবে)

ডিবি: মাইগ্রেট - ডিরেক্টরি থেকে বিদ্যমান migrations চালানো হবে (ডিবি / মাইগ্রেশন /। আরবি) *।

ডিবি: বীজ - ডিরেক্টরি থেকে বীজ তথ্য চালানো হবে (ডিবি / মাইগ্রেশন / seed.rb) ..

আমি সাধারণত পছন্দ করি:

rake db:reset

একবার সব করতে।

চিয়ার্স!


শুধু আপনি চালাতে পারেন

rake db:setup

এটি ডাটাবেস ড্রপ করবে, নতুন ডাটাবেস তৈরি করবে এবং বীজ থেকে ডিবি তৈরি করবে যদি আপনি কিছু ডেটা সহ বীজ ফাইল তৈরি করেন।


শুধু পদক্ষেপগুলির ক্রমটি ইস্যু করুন: ডাটাবেসটি ড্রপ করুন, তারপরে পুনরায় তৈরি করুন, ডেটা মাইগ্রেট করুন, এবং যদি আপনার বীজ থাকে তবে ডাটাবেস বপন করুন:

rake db:drop db:create db:migrate db:seed

যেহেতু rake ডিফল্ট পরিবেশ বিকাশ হয় , তাই যদি আপনি spec পরীক্ষাগুলিতে ব্যতিক্রমটি দেখতে পান তবে আপনাকে পরীক্ষার পরিবেশের জন্য ডিবি পুনরায় তৈরি করতে হবে:

RAILS_ENV=test rake db:drop db:create db:migrate

বেশিরভাগ ক্ষেত্রে পরীক্ষার ডেটাবেস পরীক্ষা পদ্ধতির সময় বপন করা হয়, তাই db:seed টাস্ক অ্যাকশন পাস করতে হবে না। অন্যথায়, আপনি ডাটাবেস প্রস্তুত করতে হবে:

rake db:test:prepare

অথবা

RAILS_ENV=test rake db:seed

উপরন্তু, পুনরাবৃত্তি টাস্ক ব্যবহার করতে আপনি নিম্নলিখিত কোড Rakefile যোগ করতে পারেন:

namespace :db do
   task :recreate => [ :drop, :create, :migrate ] do
      if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
         Rake::Task[ 'db:seed' ].invoke
      end
   end
end

তারপর ইস্যু করুন:

rake db:recreate






rake