কোনও প্রকল্পে রেল নিয়ন্ত্রণকারী এবং মডেলটির কীভাবে নামকরণ করবেন


93

আমি একটি রেল অ্যাপ্লিকেশন শুরু করেছি এবং সবকিছু ঠিকঠাক কাজ করে। তবে এখন, আমি একটি নিয়ামক এবং সম্পর্কিত মডেলটির নাম পরিবর্তন করতে চাই:

আমি Corpsনিয়ামকটি Storesএবং মডেলটির জন্য একই (চূড়ান্ত গুলি ছাড়াই) পরিবর্তন করতে চেয়েছিলাম ।

গুগলের দিকে তাকিয়ে লোকেরা নিয়ন্ত্রক এবং মডেলটিকে আবার ধ্বংস করার এবং আবার তৈরি করার পরামর্শ দেয়। সমস্যাটি হ'ল এটি প্রতিটি ফাইলের আসল কোডটি মুছে ফেলবে!

কোন সমাধান? আগাম ধন্যবাদ.

উত্তর:


184

আমি যা করব তা এখানে:

সারণির নাম পরিবর্তন করতে একটি স্থানান্তর তৈরি করুন (ডাটাবেস স্তর)। আমি ধরে নিলাম আপনার পুরানো টেবিলটিকে কর্পস বলা হয় । স্থানান্তর সামগ্রীটি হবে:

class RenameCorpsToStores < ActiveRecord::Migration
  def change
    rename_table :corps, :stores
  end
end

আপনার মডেল ফাইলের নাম, আপনার মডেল শ্রেণির সংজ্ঞা এবং মডেল সমিতিগুলি পরিবর্তন করুন:

  • ফাইলের নাম: corp.rb->store.rb
  • কোড store.rb: এর class Corpজন্য পরিবর্তন করুনclass Store
  • সমস্ত মডেল সমিতিগুলির নাম পরিবর্তন করুন has_many :corps-> -has_many :stores

আপনার নিয়ামক ফাইলের নাম এবং আপনার নিয়ামক শ্রেণীর সংজ্ঞা পরিবর্তন করুন:

  • ফাইলের নাম: corps_controller.rb->stores_controller.rb
  • কোড stores_controller.rb: এর class CorpsControllerজন্য পরিবর্তন করুনclass StoresController

দর্শন ফোল্ডারগুলির নাম পরিবর্তন করুন। থেকে corpsথেকে stores

-> - এর config/routes.rbমতো ফাইলের পাথগুলিতে প্রয়োজনীয় পরিবর্তনগুলি করুন এবং কোডের সমস্ত রেফারেন্স কর্পস থেকে স্টোরগুলিতে পরিবর্তন হয়েছে তা নিশ্চিত করুন (কর্পস_পথ, ...)resources :corpsresources :stores

মাইগ্রেশন চালাতে ভুলবেন না :)

পূর্ববর্তীটি যদি সম্ভব না হয় তবে ডিবি / স্কিমা.আরবি মুছে ফেলার চেষ্টা করুন এবং সম্পাদন করুন:

 $ rake db:drop db:create db:migrate

4
কনফিগারেশন / রুট.আরবি পরিবর্তন করতে উল্লেখ করতে পারেন: সমস্ত কর্পস রুট: স্টোর রুটগুলি নির্দেশ করুন
tgf

4
find -name "oldname_on_singular?*পুনরায় নামকরণের জন্য ফাইলগুলির একটি তালিকা পেতে আমি দৌড়েছি । তারপরে আমি এটিকে অনুলিপি করে অনুলিপি করি, দ্বিতীয় এবং তৃতীয় কলামে দুটি বার আটকান। প্রথম কলামে আমি নাম পরিবর্তন করে কমান্ড যুক্ত করব এবং শেষ কলামে আমি নতুন নামের জন্য পরিবর্তন করব, এরকম কিছু:git mv ./spec/views/oldname ./spec/views/new name
এডুয়ার্ডো সান্টানা

প্রধান তালিকায় @ এডুয়ার্ডোসেন্টানা দ্বারা উল্লিখিত নতুন মডেল / শ্রেণীর নামের সাথে পরীক্ষামূলক ফাইলগুলি সম্পাদনা করা নিখোঁজ রয়েছে।
ব্যবহারকারী 2953607

4
rake db:dropসুপার বিপজ্জনক! আমি আপনাকে এই লাইনটি "রেক ডিবি: মাইগ্রেট" হিসাবে পরিবর্তন করার জন্য সরিয়ে দেওয়ার পরামর্শ দিচ্ছি! মানুষের কপি-পেস্ট করে চালানোর প্রবণতা রয়েছে!
সাগর রাঙ্গলাণী

10

নোবিতা উত্তর ছাড়াও আপনাকে একইভাবে পরীক্ষাসহায়ক শ্রেণীর সংজ্ঞা এবং ফাইলের নাম পরিবর্তন corpsকরতে হবে storeআরও গুরুত্বপূর্ণভাবে আপনার কনফিগারেশন / રૂટ્સ.আরবি ফাইলটিতে পরিবর্তন corpsকরা উচিতstore

সুতরাং মোট আপনি কন্ট্রোলার, সম্পর্কিত মডেল, ভিউ, সহায়ক, পরীক্ষা এবং রুট ফাইলগুলিতে পরিবর্তন করছেন।

আমি মনে করি তোমার সাথে কি পরামর্শ দেখা করেছি destroy& generateএকটি ভাল বিকল্প। আমি এখানে কীভাবে এটি করতে হবে তার উত্তর দিয়েছি: রেলস: একটি নিয়ামক এবং সংশ্লিষ্ট মডেলটির নামকরণ nam


7

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

ব্যবহার:

রেল প্রকল্পগুলির জন্য প্রাথমিক নাম এবং রিফ্যাক্টরিংগুলি ings যদিও এগুলি নিখুঁত নয়, তারা আপনার জন্য প্রচুর কাজ করবে এবং আপনার সময় সাশ্রয় করবে।

ব্যবহার করার আগে, আপনাকে পরিষ্কার ভাণ্ডার থেকে শুরু করার পরামর্শ দিন যাতে আপনি সহজেই পরিবর্তনগুলি পর্যালোচনা করতে পারেন।

স্থাপন করা:
gem install rails_refactor

ব্যবহারের আগে, নিশ্চিত হয়ে নিন যে আপনি আপনার রেল প্রকল্পের মূলটিতে সিডি করেছেন।

একটি নিয়ামকের নাম পরিবর্তন করতে:
rails_refactor rename OldController NewController

  • নিয়ামক ফাইল এবং ফাইলে শ্রেণীর নাম পরিবর্তন করে
  • নিয়ামক বিশিষ্ট ফাইল এবং ফাইলে শ্রেণীর নাম পরিবর্তন করে
  • নাম দেখুন ডিরেক্টরি দেখুন
  • নামকরণকারী হেল্পার ফাইল এবং ফাইলে মডিউল নাম
  • আপডেট রুট

একটি নিয়ামক পদক্ষেপের নতুন নামকরণ করতে:
$ rails_refactor rename DummyController.old_action new_action

  • নিয়ামক শ্রেণীর ফাইলে নিয়ন্ত্রণকারী ক্রিয়াকে পুনরায় নামকরণ করে
  • পুনরায় নামকরণ সমস্ত ফর্ম্যাটের ফাইল দেখেন

কোনও মডেলটির নতুন নামকরণ করতে:
$ rails_refactor rename OldModel NewModel

  • মডেল ফাইল এবং ফাইলে শ্রেণীর নাম পরিবর্তন করে
  • স্পেক ফাইল এবং ফাইলে শ্রেণীর নাম পরিবর্তন করে
  • ফাইলের মাইগ্রেশন এবং শ্রেণীর নাম এবং টেবিলের নাম পরিবর্তন করে

...


6

আমি নোবিতার উত্তরের সাথে যুক্ত করেছি (যা আমি যথেষ্ট রেপ থাকলে আমি মন্তব্য করব), আপনি যদি সাহসী বোধ করেন তবে আপনার কোডের ফাইলের নাম এবং মডেলের উল্লেখগুলি পরিবর্তন কিছুটা স্বয়ংক্রিয়ভাবে করা যেতে পারে। উদাহরণস্বরূপ, আপনার কোডটিতে রেফারেন্স পরিবর্তন করতে আপনি ব্যবহার করতে পারেন

একক, বিয়োগ এবং মায়াস:

grep -rl corp | xargs sed -i 's/corp/store/g'
grep -rl Corp | xargs sed -i 's/Corp/Store/g'

বহুবচন, বিয়োগ এবং মায়াস (একবচনটি বহুবচনটির পরিবর্তে কেবল বহুবচনটি কেবল প্রয়োজন হলে এবং শেষে অক্ষরের প্রয়োজন):

grep -rl corps | xargs sed -i 's/corps/stores/g'
grep -rl Corps | xargs sed -i 's/Corps/Stores/g'

ফাইলগুলির নাম পরিবর্তন করুন:

find . -name '*corp*' -exec bash -c 'mv $0 ${0/corp/store}' {} \;

এবং কিছু * নিক্স স্বাদে (স্ল্যাকওয়্যার সহ) নামকরণ নামে একটি ইউটিলিটি রয়েছে যা আপনাকে ফাইলগুলির নাম পরিবর্তন করতে সহায়তা করবে:

shopt -s globstar
rename -v corps stores app/**/*corps* config/**/*corps* test/**/*corps*

চেক পুনঃনামকরণটি আপনার যা মনে হয় তা হ'ল, আমি একই নামের আলাদা আলাদা ইউটিলিটি সহ জাহাজে উবুন্টুর মতো অন্যান্য বিতরণগুলিও জানি ( /unix/78621/find-rename-command- dont-work )। উবুন্টুতে আপনি পরিবর্তে এটি করবেন:

shopt -s globstar
rename -v 's/corps/stores/' app/**/*corps* config/**/*corps* test/**/*corps*

নোট করুন যে আপনি সম্ভবত আপনার বীজ.আরবি ফাইল বাদে ডিবি / যেকোন ফাইলের নাম পরিবর্তন এড়াতে চান, সুতরাং আপনি সম্ভবত এই ডিরেক্টরিটি বাদ দিতে এবং ম্যানুয়ালি কোনও পরিবর্তন করতে চান।


5

আর একটি গুরুত্বপূর্ণ বিষয় হ'ল আপনাকে সেই মডেল সমিতিগুলি আপডেট করতে হবে যা আপনি নিজেই নাম পরিবর্তন করতে পারেন বা উত্সটি ধ্বংস এবং উত্স তৈরি করেছেন (যেহেতু তারা অন্যান্য মডেলগুলিতে রয়েছে) whether আপনি হয় ডাটাবেসে বিদেশী কীগুলির কলামের নাম পরিবর্তন করতে এবং কোডে থাকা বিদেশী কীগুলির সমস্ত উল্লেখ পরিবর্তন করতে মাইগ্রেশন চালাতে পারেন:

rename_column :table, :old_id, :new_id

বা পুরানো বিদেশী কী ব্যবহার করে এমন সমিতিটি ঘোষণা করার সময় একটি কাস্টম বিদেশী কী সেট করুন:

belongs_to :new, foreign_key: "old_id"

এছাড়াও যদি আপনার সংস্থানটিতে চিত্রগুলি অন্তর্ভুক্ত থাকে তবে সেগুলি প্রায়শই একটি ডিরেক্টরিতে সঞ্চিত থাকে যার মধ্যে সংস্থানটির নাম অন্তর্ভুক্ত থাকে তবে (কমপক্ষে ক্যারিয়ারওয়েভের সাথে) একবার সংস্থানটির নাম পরিবর্তন হলে সেগুলি ভুলভাবে উল্লেখ করা হবে (ফাইলটি '/ আপলোড / পুরানো / চিত্র / 1 / pic.jpg 'তবে' আপলোড / নতুন / ... 'তে সন্ধান করা হয়েছে, সুতরাং আপনাকে ছবিগুলি মুছে ফেলা এবং পুনরায় আপলোড করতে হবে, তাদের নতুন পথে সরিয়ে নিতে হবে, বা সম্ভবত যেখানে পরিবর্তন করতে হবে' পুনরুদ্ধার করা হচ্ছে।


0

এবং যদি আপনার কাছে মডেল পরীক্ষাগুলি থাকে তবে আপনাকে পরিবর্তন করতে হবে:

ফাইলটির নাম পরিবর্তন করুন: কর্পোরেশন.আরবি -> স্টোর_টেষ্ট.আরবি (নিয়ামক পরীক্ষা, সংহতকরণ পরীক্ষা, ফিক্সচার ইত্যাদি)

Store_test.rb এর কোড: ক্লাস স্টোর টেস্টের জন্য কর্পস টেস্ট পরিবর্তন করুন।

এবং নিয়ামক, মডেল, ইন্টিগ্রেশন, ফিক্সচার পরীক্ষায় কর্পোরেশনের সমস্ত উল্লেখ re


0

যে কেউ কেবল এই বেদনাদায়ক প্রক্রিয়াটি শেষ করেন সর্বাধিক গুরুত্বপূর্ণ পদক্ষেপটি যথাসম্ভব কার্যকারিতা পরীক্ষা করার জন্য পর্যাপ্ত টেস্টগুলি তৈরি করা । আপনার নাম পরিবর্তন করতে চান এমন মডেল / নিয়ন্ত্রককেই নয় কেবল সমস্ত অন্যান্য মডেল / নিয়ন্ত্রক / দর্শন অংশগুলিও তাদের কভার করা উচিত। যাইহোক এটি একটি ভাল (বা এমনকি একটি আবশ্যক) অনুশীলন।

পুনরাবৃত্তির মাধ্যমে এই পদক্ষেপগুলি করুন, কখনও কখনও আপনাকে অতিরিক্ত ফাইলগুলি পরিবর্তন করতে হবে যা আবিষ্কার করতে কয়েকবার (5 এবং আরও বেশি) ধাপে ফিরে আসতে হবে। এবং এখন পুনরায় নামকরণের পদক্ষেপগুলির জন্য:

  1. সমস্ত ফাইল (নাম ও বিষয়বস্তু) অন্তর্ভুক্ত পরিবর্তন Corps/Corpকরতে Stores/Storedb/migrateফোল্ডারের
  2. চালানোর চেষ্টা করুন:

    rak db: ড্রপ: সব

    rak db: create

    rak db: স্থানান্তরিত করা

  3. db/seeds.rbফাইলের বিষয়বস্তু পরিবর্তন করুন।

  4. চালানোর চেষ্টা করুন: rake db:seed --trace(এই ধাপে আপনার কিছু অন্য মডেল / নিয়ন্ত্রণকারী ফাইলগুলি পরিবর্তন করতে হতে পারে।)
  5. test/fixturesফাইলগুলি পরিবর্তন করুন । আপনাকে কেবল কর্পস.আইএমএল নয় অন্যান্য সম্পর্কিত ফাইলগুলি পরিবর্তন করতে হবে (কিছু ফাইল কর্প_আইড অন্তর্ভুক্ত থাকতে পারে)।
  6. আপনার পরীক্ষা চালানোর চেষ্টা করুন, স্থির বীজ দিয়ে এটি চালানো ভাল (যুক্ত করুন: TESTOPTS="--seed=1981"বা অন্য কোনও সংখ্যা)
  7. ফাইলগুলির নাম পরিবর্তন করুন (নাম এবং সামগ্রী) যত্নশীল হতে হবে কখনও কখনও আপনি পরীক্ষা এবং অন্যান্য অ্যাপ্লিকেশন ফাইল পরিবর্তন করতে হবে

0

নিয়ন্ত্রকের জন্য আপনাকে ম্যানুয়ালি এটি করা থাকলে আপনাকে নিম্নলিখিত জায়গাগুলিতে পরিবর্তন করতে হবে :

  • রুট
  • অ্যাপ্লিকেশন / মতামত
  • অ্যাপ / নিয়ন্ত্রণকারী
  • পরীক্ষা / নিয়ন্ত্রক
  • অ্যাপ্লিকেশন / সহায়ক
  • অ্যাপ্লিকেশন / সম্পদ / জাভাস্ক্রিপ্ট /
  • অ্যাপ্লিকেশন / সম্পদ / স্টাইলশিট /

মডেলের জন্য, নোবিতার উত্তরটি বেশ ভাল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.