রেল 3 এ অ্যাক্টিভেকর্ড সরান


99

এখন যে রেলস 3 বিটা বের হয়ে গেছে, আমি ভেবেছিলাম যে আমি কেবল একটি অ্যাপ্লিকেশন পুনরায় লেখার দিকে নজর দেব যা আমি সবেমাত্র রেল 3 বিটাতে কাজ শুরু করেছি, উভয়ই এর জন্য অনুভূতি পেতে এবং কিছুটা শুরুর দিকে। অ্যাপটি তার সমস্ত মডেলের জন্য মঙ্গোডিবি এবং মঙ্গোম্যাপার ব্যবহার করে এবং তাই অ্যাক্টিভেকর্ডের কোনও প্রয়োজন নেই no পূর্ববর্তী সংস্করণে, আমি নিম্নলিখিত উপায়ে অ্যাক্টিভরেকর্ডটি আনলোড করছি:

config.frameworks -= [ :active_record ]    # inside environment.rb

সর্বশেষতম সংস্করণে এটি কাজ করে না - এটি কেবল একটি ত্রুটি নিক্ষেপ করে:

/Library/Ruby/Gems/1.8/gems/railties-3.0.0.beta/lib/rails/configuration.rb:126:in
  `frameworks': config.frameworks in no longer supported. See the generated 
  config/boot.rb for steps on how to limit the frameworks that will be loaded 
  (RuntimeError)
 from *snip*

অবশ্যই, আমি বুট.আরবি এর পরামর্শ অনুসারে দেখেছি, তবে যতদূর আমি দেখতে পাচ্ছি, এআর আনলোড করার বিষয়ে আমি কীভাবে যেতে পারি সে সম্পর্কে এখানে কোনও ধারণা পাওয়া যায়নি। আমার এটি করার দরকার কারণ হ'ল আমি চাই না এমন কিছু লোড করা কেবল বোকামিই নয়, আমি যখন কোনও নিয়ামকের জন্য জেনারেটর চালানোর চেষ্টা করি তখনও এটি ডিবি সংযোগ তৈরি করতে অক্ষমতার অভিযোগ করে। এর কারণ হল আমি অপনোদিত করেছি database.ymlশৃঙ্খলা ব্যবহার করার জন্য MongoDB জন্য যোগাযোগ বিশদ বিবরণ সঙ্গে এটি প্রতিস্থাপিত এই সারকথা MongoDB সংযোগ বিস্তারিত জানার জন্য database.yml ব্যবহার করার জন্য। নিশ্চিত না কেন যেভাবেই কোনও নিয়ামক তৈরি করতে একেবারে ডিবি সংযোগ শুরু করতে সক্ষম হওয়া প্রয়োজন কেন ....

কেউ কি এর সঠিক পদ্ধতি সম্পর্কে 3 উপায় অবগত আছেন?

উত্তর:


155

আমি উত্সটি পড়ার দ্বারা এটি চালিয়ে যাচ্ছি, সুতরাং যদি এটি আসলে কাজ করে তবে আমাকে জানান। :)

railsকমান্ড যে এখন আবেদন টেমপ্লেট উত্পন্ন একটি বিকল্প আছে -O, যা বলে এটা ActiveRecord এড়িয়ে যেতে।

আপনি যদি পুনরায় চালনার মতো মনে railsকরেন না তবে আপনার বিদ্যমান অ্যাপ্লিকেশনটিতে নিম্নলিখিতটি পরীক্ষা করা উচিত:

  • পরীক্ষা করে দেখুন যে আপনার config/application.rb নেই আছে require 'rails/all'বা require "active_record/railtie"। পরিবর্তে, অ্যাক্টিভেকর্ড ছাড়াই স্ট্যান্ডার্ড রেলস সেটআপের জন্য, এর জন্য কেবল নিম্নলিখিতগুলির প্রয়োজন হবে:

    require File.expand_path('../boot', __FILE__)
    
    require "action_controller/railtie"
    require "action_mailer/railtie"
    require "active_resource/railtie"
    require "rails/test_unit/railtie"
    require "sprockets/railtie"
    
    # Auto-require default libraries and those for the current Rails environment. 
    Bundler.require :default, Rails.env
    
  • যদি config/application.rbআপনি এই config.generatorsবিভাগটি ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে এতে কোনও লাইন নেই g.orm :active_record। আপনি nilযদি চান তবে এটিকে সুস্পষ্টভাবে সেট করতে পারেন, তবে g.ormপুরোপুরি বাদ দিলে এটি ডিফল্ট হওয়া উচিত ।

  • Ptionচ্ছিক, তবে আপনার মধ্যে Gemfile, gemলাইনটি সরিয়ে ফেলুন যা আপনার ডাটাবেসের জন্য মডিউলটি লোড করে। gem "mysql"উদাহরণস্বরূপ এটি লাইন হতে পারে ।


4
হ্যাঁ, এটি এটি সম্পন্ন হয়েছে বলে মনে হয়। এটি উপস্থিত হয় -O বিকল্পটিকে '--স্কিপ-অ্যাক্টিভেটরকার্ড' হিসাবেও ডাকা যেতে পারে। আমি এই বিকল্পের সাহায্যে অন্য (অস্থায়ী) অ্যাপ্লিকেশনটির জন্য রেল কমান্ডটি চালিয়েছি এবং এটি উপরে উল্লিখিত যা ঠিক তা মিলে একটি নতুন অ্যাপ্লিকেশন টেম্পলেট তৈরি করেছে। সুতরাং আমি এই পরিবর্তনগুলি কেবল আমার আসল অ্যাপ্লিকেশনটিতে অনুলিপি করে আটকিয়ে ফেলতে পারি। ধন্যবাদ - চমৎকার সন্ধান :)
চিহ্নিত করুন Mark

4
চমত্কার - --স্কিপ-অ্যাক্টিভরেকর্ডের জন্য ধন্যবাদ। এটাই আমার দরকার ছিল।
ফিঙ্গলাস

এটি বেশিরভাগ অংশের জন্য কাজ করে, যখন আমি রেলগুলি উত্পাদন করতে চালিত করি তা বাদে - আমি এখনও সেখানে অ্যাক্টিভেকর্ড স্টাফ দেখি - আমি কীভাবে এটি সরিয়ে ফেলব?
হ্যাকারন

8
রেল ৩.১ require "sprockets/railtie"এ আপনার application.rbফাইল থাকা দরকার।
erskingardner

4
এই উত্তরটি এবং আমার পূর্ববর্তী মন্তব্যের জন্য কেবলমাত্র দ্রুত আপডেট যোগ করতে ... 3.3 রেলগুলিতে এটি এখন --skip-active-record। অতিরিক্ত ড্যাশ লক্ষ্য করুন।
এম্পলিং

46

রেল 4

আমি কীভাবে 4 রেলগুলিতে এটি নিষ্ক্রিয় করব তা সন্ধান করছিলাম এবং কেবলমাত্র এই উত্তরটি পাওয়া গেল যা রেলগুলিতে আর কাজ করে না So সুতরাং আপনি কীভাবে রেল 4 এ এটি করতে পারেন (আরসি 1 তে পরীক্ষিত)।

একটি নতুন প্রকল্পে

rails new YourProject --skip-active-record

একটি বিদ্যমান প্রকল্পে

  • আপনার জেমফাইলে, ডাটাবেস ড্রাইভার রত্ন, যেমন gem 'sqlite3'বা gem 'pg'
  • কনফিগারেশন / প্রয়োগ.আরবিতে, এর require 'rails/all'সাথে প্রতিস্থাপন করুন

    "অ্যাকশন_কন্ট্রোলার / রেলটি" প্রয়োজন
    "অ্যাকশন_মেলার / রেলটি" প্রয়োজন
    "স্প্রোকেটস / রেলটি" দরকার
    "রেল / টেস্ট_উনিট / রেলটি" দরকার
    

  • কনফিগারেশন / পরিবেশ / উন্নয়ন.rb এ, মুছে ফেলুন বা মন্তব্য করুন config.active_record.migration_error = :page_load

  • সম্ভাব্যভাবে আপনাকে স্পেশাল_হেলপার থেকে অ্যাক্টিভ_রেকর্ড সহায়কগুলি সরিয়ে ফেলতে হবে (মন্তব্যে ভেনোমের মাধ্যমে)

  • সম্ভাব্য আপনাকে সংযোগ ব্যবস্থাপনার মিডলওয়্যারটি সরিয়ে ফেলতে হবে config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"( ইউনিকর্নের ক্ষেত্রে বলে মনে হচ্ছে): ( https://stackoverflow.com/a/18087332/764342 এর মাধ্যমে )

আমি আশা করি এটি অন্যদেরকে কীভাবে 4 রেলগুলিতে অ্যাক্টিভেকর্ড অক্ষম করবেন তা সন্ধান করতে সহায়তা করে।


4
ধন্যবাদ! তবুও আপনাকে স্পেশাল_হেল্পার থেকে অ্যাক্টিভ_রেকর্ড সহায়কগুলি সরানো দরকার (বাধ্যতামূলক নয়, তবে যদি আপনি চশমা চালাচ্ছেন)। রিমিয়ান দ্বারা শেষ মন্তব্য দেখুন।
ভেনোম

আমাকে সাহায্য করেছেন, ধন্যবাদ! নীচের মতামত অনুসারে, অ্যাপ্লিকেশন.আরবি এবং / অথবা পরিবেশ / {env} .rb ফাইলগুলিতে মন্তব্য করার জন্য অন্যান্য কনফিগারেশন ঘোষণা থাকতে পারে। ওয়াইএমএমভি
নাথান স্মিথ

ক্রিয়াকলাপটি এখনও জেমফিল.লোকে রয়ে গেছে ... আমরা কি এর বিরুদ্ধে কিছু করতে পারি?
বটি

পছন্দ করুন এটি রেলের অংশ। আপনার। লক থেকে এটিকে সরাতে আমি কল্পনা করি যে আপনাকে রেলের উপর নির্ভরতা সরিয়ে ফেলতে হবে এবং সমস্ত পৃথক উপাদানগুলির উপর নির্ভর করতে হবে। নির্ভরতার তালিকার জন্য রত্নটি দেখুন - আপনি অ্যাক্টিভেকর্ড বাদে সমস্ত কিছুর উপর নির্ভর করতে চান। github.com/rails/rails/blob/master/rails.gemspec
জন Hinnegan

এই পরিবর্তনটি করার পরে আমি কোনও আইআইএন সম্পর্কিত সমস্যার মধ্যে চলেছি বলে মনে হচ্ছে: lib / active_support / i18n.rb: 13: `<শীর্ষে (প্রয়োজনীয়)> ': আনলিটেশনাইজড ধ্রুবক I18n (NameError)। কোন ধারনা?
মাইকেল পেল

36

একটি নতুন রেল অ্যাপ্লিকেশানের জন্য, আপনি এটি --স্কিপ-সক্রিয়-রেকর্ড প্যারামিটার নির্দিষ্ট করে সক্রিয় রেকর্ড বাদ দিতে পারেন। যেমন:

rails new appname --skip-active-record

আমি এটি করেছিলাম এবং আমার বর্তমান অ্যাপ্লিকেশনটিতে অ্যাক্টিভেকর্ড ব্যবহার করা জিনিসগুলি খুঁজে পেতে এবং সরাতে কয়েকটি আলাদা দৌড়েছিলাম
কিথ স্মাইলি

15

আপনি যদি রেল ৩.২ ব্যবহার করে একটি নতুন প্রকল্প তৈরি করেন তবে আপনাকে মন্তব্য করতে হবে:

config.active_record.mass_assignment_sanitizer = :strict

এবং

config.active_record.auto_explain_threshold_in_seconds = 0.5

আপনার વિકાસ . rb ফাইল।


6

ওপরের সবই সত্য। রেল ৩.১ এ আরও একটি জিনিস যা করতে হয়েছিল তা হল মন্তব্য করা out

config.active_record.identity_map = true

মধ্যে config/application.rb


2

যদি আপনি আরএসপেক চালাচ্ছেন তবে আপনাকেও সরিয়ে ফেলতে হবে (স্পেস_হেল্পারে):

  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
  config.fixture_path = "#{::Rails.root}/spec/fixtures"

এবং অপসারণ

  # If you're not using ActiveRecord, or you'd prefer not to run each of your
  # examples within a transaction, remove the following line or assign false
  # instead of true.
  config.use_transactional_fixtures = true

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