Требовать файл, только если он существует

Возможно, есть лучший способ сделать это. Я хочу иметь возможность динамически загружать некоторые маршруты. Я планировал иметь статические маршруты в routes.rb и пользовательские маршруты в custom_routes.rb. Затем в нижней части routes.rb я бы сделал:

CustomRoutes.create if defined?(CustomRoutes)

Чтобы это работало, я должен требовать custom_routes.rb только в том случае, если файл существует, но как?

custom_routes.rb

class CustomRoutes
  def self.create
    MyApplication.routes.draw do
      #...more routes here
    end
  end
end

person Josh M.    schedule 01.04.2014    source источник


Ответы (3)


Ты можешь сделать:

require 'custom_routes' if File.exists?('custom_routes.rb')

Хотя вы можете добавить некоторую информацию о пути:

require 'custom_routes' if File.exists?(File.join(Rails.root, 'lib', 'custom_routes.rb'))
person Shadwell    schedule 01.04.2014

Что-то типа

require File.expand_path("../../config/custom_routes", __FILE__) if File..exists?("../../config/custom_routes.rb")

person jjk    schedule 01.04.2014

Вы должны просто спасти LoadError исключение:

begin
  require "some/file"
rescue LoadError
end

Это самый обычный способ.

person skalee    schedule 11.08.2018