仅在文件存在时才需要文件

时间:2014-04-01 17:24:12

标签: ruby-on-rails ruby-on-rails-3.2 ruby-1.8.7

也许有更好的方法来做到这一点。我希望能够动态加载一些路由。我计划在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

3 个答案:

答案 0 :(得分:2)

你可以这样做:

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

虽然您可能想要添加一些路径信息:

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

答案 1 :(得分:0)

这样的东西

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

答案 2 :(得分:0)

您只需在LoadError例外情况下进行救援:

begin
  require "some/file"
rescue LoadError
end

这是最常规的方法。