Rails.env বনাম RAILS_ENV


219

কোনটি এনভির সাথে চলছে তা যাচাই করার সময় আমি উদাহরণগুলিতে উভয়ই দেখতে পাচ্ছি What's কী পছন্দ? তারা কি সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে সমান?

উত্তর:


370

ডক্স অনুসারে , #Rails.envমোড়ানো RAILS_ENV:

    # File vendor/rails/railties/lib/initializer.rb, line 55
     def env
       @_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
     end

তবে, কীভাবে এটি মোড়ানো রয়েছে তা বিশেষভাবে দেখুন ActiveSupport::StringInquirer:

এই শ্রেণিতে একটি স্ট্রিং মোড়ানো আপনাকে সাম্যের জন্য পরীক্ষার একটি সুন্দর উপায় দেয়। Rails.env দ্বারা ফেরত মানটি স্ট্রিংইনকায়ারর বস্তুতে মোড়ানো থাকে তাই এটি কল করার পরিবর্তে:

Rails.env == "production"

আপনি এটি কল করতে পারেন:

Rails.env.production?

সুতরাং তারা ঠিক সমতুল্য নয়, তবে তারা মোটামুটি কাছাকাছি। আমি এখনও রেলগুলি খুব বেশি ব্যবহার করি নি, তবে আমি বলব #Rails.envঅবশ্যই ব্যবহারের কারণে আরও দৃষ্টি আকর্ষণীয় বিকল্প StringInquirer


সুন্দর ব্যাখ্যা, ধন্যবাদ! আমি যেখানে RAILS_ENV সংজ্ঞায়িত হয়েছে তাও অনুসন্ধান করার চেষ্টা করছি? কোন ধারণা??
ব্র্যাড

70
এটি উল্লেখযোগ্য যে এটি Rails.envহ'ল নতুন মান হিসাবে RAILS_ENVহ্রাস করা হচ্ছে।
রায়ান বিগ

4
রায়ান, একটি কমান্ড লাইনে, আপনি Rails.env ব্যবহার করতে পারবেন না। সুতরাং যদি এটি শীঘ্রই অবনতি হয়, তবে আপনি সি এল এলিতে কী ব্যবহার করবেন?
pjammer

8
রেলস.এনভি.প্রডাকশন ব্যবহার করছেন? টাইপোগুলির বিরুদ্ধে আপনাকে বাস্তবে পরিবেশ পরিবর্তনের জন্য সুরক্ষা দেয়: RAILS_ENV = "উত্পাদন"। মিস = চিহ্নটি লক্ষ্য করুন।
ম্যাগনে

এই সব হাস্যকর জটিলতা তাই আপনি একটি প্রশ্ন চিহ্ন ব্যবহার করতে পারেন?
অ্যাকাউন্ট ছুঁড়ে

31

ENV['RAILS_ENV']এখন অবচয় করা হয়েছে

আপনার ব্যবহার করা উচিত Rails.envযা পরিষ্কারভাবে অনেক ভাল is


29

রেলগুলির আগে 2.x বর্তমান পরিবেশ পাওয়ার জন্য পছন্দের উপায়টি RAILS_ENVধ্রুবকটি ব্যবহার করা হয়েছিল । তেমনিভাবে, আপনি RAILS_DEFAULT_LOGGERবর্তমান লগারটি RAILS_ROOTপেতে বা রুট ফোল্ডারের পাথ পেতে ব্যবহার করতে পারেন ।

রেল ২.x থেকে শুরু করে, রেলগুলি Railsকিছু বিশেষ পদ্ধতি সহ মডিউলটি প্রবর্তন করেছে :

  • Rails.root
  • Rails.env
  • Rails.logger

এটি কেবল একটি অঙ্গরাগ পরিবর্তন নয়। রেলস মডিউলটি এমন স্ট্যান্ডার্ড কনস্ট্যান্ট যেমন StringInquirerসমর্থন হিসাবে উপলব্ধ না করে এমন ক্ষমতা সরবরাহ করে । কিছুটা সামান্য পার্থক্যও রয়েছে। Rails.rootএকটি সাধারণ Stringবুথ Pathউদাহরণ দেয় না

যাইহোক, পছন্দের উপায়টি Railsমডিউলটি ব্যবহার করছে । কনস্ট্যান্টগুলি 3 রেলগুলিতে অবহিত করা হয়েছে এবং ভবিষ্যতে প্রকাশে অপসারণ করা হবে, সম্ভবত রেলস 3.1।


1
এফওয়াইআই, এখানে যা আলোচনা করা হয়েছিল তা থেকে মনে হয় যে এই পদ্ধতিগুলি ২.০ নয়, ২.৩ রেলের মধ্যে প্রবর্তিত হয়েছিল।
jrdioko

আমরা একটি প্রকল্পে 2.1.2 ব্যবহার করছি। Rails.envকোনও সমস্যা ছাড়াই কাজ করে।
বেনজমিন ওকে

2

আমার অ্যাপ্লিকেশনটি ডিবাগ করার সময় অদ্ভুত আচরণ: "সক্রিয়_সাম্পোর্ট / বিজ্ঞপ্তিগুলি" প্রয়োজন (আরডিবি: 1) পি এনভি ['RAILS_ENV'] "পরীক্ষা" (আরডিবি: 1) পি রেইলস.এনভি "ডেভলপমেন্ট"

আমি বলব যে আপনার একে অপরকে লেগে থাকা উচিত and


2

আপডেট: রেলগুলিতে 3.0.9: এনএভিও পদ্ধতিটি রেলটি / লাইব / Rails.rb এ সংজ্ঞায়িত করা হয়েছে

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