加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

ruby-on-rails-4-Rails域约束(服务于多个域)

发布时间:2020-12-13 20:54:24 所属栏目:Nginx 来源:网络整理
导读:$rails -v Rails 4.2.1 $ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux] 我正在为移动应用程序构建API,该应用程序将具有管理界面.我想做的是使用unicorn(已在我的开发环境中运行)通过nginx运行它 我有2个域路由到完全相同的Rails项目.这

$rails -v Rails 4.2.1

$ruby -v ruby 2.2.2p95 (2015-04-13 revision > 50295) [x86_64-linux]

我正在为移动应用程序构建API,该应用程序将具有管理界面.我想做的是使用unicorn(已在我的开发环境中运行)通过nginx运行它

我有2个域路由到完全相同的Rails项目.这些域是:api.project.dev和admin.api.project.dev

我读过这个:
http://guides.rubyonrails.org/routing.html#advanced-constraints

并尝试:
Separate Domain for Namespaced Routes in Rails 4(查看答案)

我尝试了其他一些方法来尝试使其正常工作,唯一出现的问题(对于任何子域)是:

无效的路由名称,已在使用:“ root”

我当前的实现是:

class DomainConstraint
  def initialize(domain)
    @domains = domain
  end

  def matches?(request)
    @domains.include? request.domain
  end
end

require 'domain_constraint'
Rails.application.routes.draw do
  resources :statuses
  constraints (DomainConstraint.new('api.project.dev')) do
    root :to => 'statuses#index'
  end

  constraints(DomainConstraint.new('admin.api.project.dev')) do
    root :to => 'statuses#new'
  end
end

请记住,当前根仅是不同的页面,但最终将是完全不同的系统.

我不太确定从这里到哪里才能获得此功能.

最佳答案
在irc上#RubyOnRails的出色人才的出色帮助下,我找到了解决方案.因此,感谢crankharder和sevenseacat的意见和建议.

我最终得到的是:

class DomainConstraint
  def initialize(domain)
    @domains = domain
  end

  def matches?(request)
    @domains.include? request.host
  end
end

和:

require 'domain_constraint'
Rails.application.routes.draw do

  constraints DomainConstraint.new('api.project.dev') do
    resources :statuses
    root :to => 'statuses#index',as: 'api_root'
  end

  constraints DomainConstraint.new('admin.api.project.dev') do
    resources :statuses
    root :to => 'statuses#new'
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读