كيف يمكنني تحسين طريقة مساعد القضبان مع ملف التكوين؟

StackOverflow https://stackoverflow.com/questions/921694

سؤال

لدي مساعد قضبان في ملف Application_helper.rb الذي يشبه هذا:

def external_link(name)
    url = external_links[name]
    if url.blank?
        Rails.logger.error "No URL defined for external link [#{name}]!"
        return "[URL undefined]"
    end
    return url
end

متغير "External_Links" هو التجزئة التي يجب الحصول عليها من ملف خارجي. يمكن أن يكون الملف بسيطا مثل تجزئة روبي أو تكوين YML بسيط.

ربما أنا أفتقد شيئا - اعتقدت أنني سأكون قادرا على تحديد التجزئة في بناء جملة Ruby في ملف خارجي و "تتطلب" من البيئة، ولكن هذا لا يعرض متغير التجزئة في المساعد.

كيف يمكنني أن أقوم بالترشيح بحيث بحيث سيكون "في نطاق" في طريقة مساعد التطبيق؟

هل كانت مفيدة؟

المحلول

استخدم ملف YML أساسي كما تشير إليه ثم قم بتحميله عبر:

config = YAML::load_file(RAILS_ROOT+'/config/external_urls.yml')

ثم يمكنك الوصول إليه عبر كائن "التكوين" وفقا لذلك. إذا لم يتغير الملف بين الطلبات، فيمكنك التخزين المؤقت تحميل الملف هذا لاستخدامه لاحقا (لذلك لم يتم فتحه ويحلله على كل استخدام)، ولكن هذا تحسين الأداء وليس حاسما لإثبات المفهوم.

نصائح أخرى

أنا أستعمل تطبيق التكوين, ، الذي يتيح لي إعداد RaRs_root / config / Application_config.yml مثل هذا:

  development: &defaults
    items_per_page: 25
    secure_with_basic_auth: false
    base_url: development.com
  test:
    <<: *defaults
    base_url: test.com
  production:
    <<: *defaults
    base_url: production.com

ثم الرجوع إليهم مثل هذا:

  class FooController < ApplicationController
    def index
      @base_url = property(:base_url)
    end
  end

هناك أيضا AppConfig البرنامج المساعد, ، والتي تبدو أفضل، لكنني لم أحاول ذلك بعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top