كيف يمكنني تحسين طريقة مساعد القضبان مع ملف التكوين؟
-
06-09-2019 - |
سؤال
لدي مساعد قضبان في ملف 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 البرنامج المساعد, ، والتي تبدو أفضل، لكنني لم أحاول ذلك بعد.