gpt4 book ai didi

ruby-on-rails - 在 Rails 4 中创建到外部 URL 的 Rails 路由

转载 作者:行者123 更新时间:2023-12-04 06:14:45 25 4
gpt4 key购买 nike

我有一堆路由(~50)需要映射到外部 URL。我绝对可以按照 here 中的建议去做但这会使我的 routes.rb 文件变得困惑。有什么办法可以将它们放在配置文件中并从我的 routes.rb 文件中引用它?

另外,映射到外部URL时,如果是非生产环境,则需要映射到“http:example-test.com/..”,生产模式下需要映射到“http:example.com/..”。 ..”。我知道我可以在配置中有一个 yml 文件来处理不同的环境。但是如何在我的 routes.rb 文件中访问它?

最佳答案

首先让我们为外部主机创建一个自定义配置变量:

# config/application.rb
module MyApp
class Application < Rails::Application
config.external_host = ENV["EXTERNAL_HOST"]
end
end

然后让我们为每个环境设置它:
# config/environments/development.rb
Rails.application.configure do
# ...
config.external_host ||= 'dev.example.com'
end

# config/environments/test.rb
Rails.application.configure do
# ...
config.external_host ||= 'test.example.com'
end

# config/environments/production.rb
Rails.application.configure do
# ...
config.external_host ||= 'example.com'
end

然后我们设置路由:
Rails.application.routes.draw do
# External urls
scope host: Rails.configuration.external_host do
get 'thing' => 'dev#null', as: :thing
end
end

让我们试试看:
$ rake routes
Prefix Verb URI Pattern Controller#Action
thing GET /thing(.:format) dev#null {:host=>"dev.example.com"}
$ rake routes RAILS_ENV=test
Prefix Verb URI Pattern Controller#Action
thing GET /thing(.:format) dev#null {:host=>"test.example.com"}
$ rake routes RAILS_ENV=production
Prefix Verb URI Pattern Controller#Action
thing GET /thing(.:format) dev#null {:host=>"example.com"}
$ rake routes EXTERNAL_HOST=foobar
Prefix Verb URI Pattern Controller#Action
thing GET /thing(.:format) dev#null {:host=>"foobar"}

关于ruby-on-rails - 在 Rails 4 中创建到外部 URL 的 Rails 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33082612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com