17

Rails 4 アプリケーションでルートを分割したいと考えています。Rails 3の場合、質問は次のように数回回答されています。

Rails 4でこれを行う正しい方法は何ですか+ルートがロードされる順序を制御する方法は?

レールからの提案 3 つの質問:

アプリケーション.rb

    config.paths['config/routes'] = Dir["config/routes/*.rb"]

次の場合に失敗します。

/Users/jordan/.rvm/gems/ruby-2.0.0-head@books/gems/railties-4.0.0/lib/rails/application/routes_reloader.rb:10:in `rescue in execute_if_updated': Rails:: Application::RoutesReloader#execute_if_updated は updater.execute_if_updated に委任されましたが、updater は nil:

@route_sets=[#]> (RuntimeError)

4

4 に答える 4

21

私はそれをこのように管理しました:

# config/application.rb
config.autoload_paths << Rails.root.join('config/routes')

# config/routes.rb
Rails.application.routes.draw do
  root to: 'home#index'

  extend ApiRoutes
end

# config/routes/api_routes.rb
module ApiRoutes
  def self.extended(router)
    router.instance_exec do
      namespace :api do
        resources :tasks, only: [:index, :show]
      end
    end
  end
end

config/routesここで、定義されているモジュールを自動ロードするためのディレクトリを追加しました。これにより、これらのファイルが変更されたときにルートが確実に再ロードされます。

これらのモジュールをメイン ファイルに含めるために使用extendします (これらは自動ロードされるため、必要ありません)。

instance_execinsideを使用self.extendedして、ルーターのコンテキストでルートを描画します。

于 2016-01-14T19:34:25.057 に答える