SORU
17 Kasım 2010, ÇARŞAMBA


Raylar birden fazla işlemek için yönlendirme tek uygulama etki alanları

Bu sorun için uygulanabilir bir çözüm bulamadı, birkaç benzer sorular burada ve başka bir yerde olmasına rağmen gitmedim. Bu soru 3, Bu yüzden burada Raylar gider: cevap olmamıştır Olası görünüyor

Şu anda kullanıcılar uygulama örneğini içeren kendi alt etki alanı oluşturmak için izin veren bir uygulama var. Raylar ise 2 en iyi alt-fu gem kullanarak, önemli ölçüde daha basit, Railscast başı olarak bu sürüm 3'te servis edildi -- http://railscasts.com/episodes/221-subdomains-in-rails-3.

Bu çok güzel bir şey, ama aynı zamanda kullanıcıların kendi hesabı ile kendi etki alanı adı ilişkilendirmek için bu seçeneği sunmak istiyoruz. Bu yüzden olabilir iken http://userx.mydomain.com http://userx.com ilişkili olarak seçmek istiyorum.

2, ama bu teknikler artık işe görünmez Raylar (özellikle bu: http://feefighters.com/devblog/2009/01/21/hosting-multiple-domains-from-a-single-rails-app/) Bu yapmak için bir kaç kaynaktan buldum.

Herkes uygun içerik göstereyim yolları rasgele bir etki alanı kabul etmek ve onu bir kontrol cihazına geçiş için kullanmak için bir yol tavsiye edebilir misiniz?

Güncelleme: Şimdi bir cevap, Leonid var zamanında yanıt için teşekkürler, en ve kodu yeni bir görünüm aldım. Sonuçta kullanıyordum mevcut Alt kod için ek (Railscast çözüm) gerekli ve sonra yollarına bir parça ekliyor.rb. Daha değilim ama ne ben, şimdiye kadar post istiyorum.

Lib/alt.rb:

class Subdomain
  def self.matches?(request)
    request.subdomain.present? && request.subdomain != "www"
  end
end

class Domain
  def self.matches?(request)
    request.domain.present? && request.domain != "mydomain.com"
  end
end

Çalışma bilinen ilk, taklit, ikinci sınıf ekledim. Ben sadece gelen etki alanı olan ana site için bir hosting benim değil sağlayan bir koşul ekleyin.

Bu sınıf yollar kullanılır.rb:

require 'subdomain'
constraints(Domain) do
  match '/' => 'blogs#show'
end

constraints(Subdomain) do
  match '/' => 'blogs#show'
end

Burada, bir dörtlük ile mevcut alt kod (yine iyi çalışıyor) Etki alanı kontrol etmek için bir ön yerleştirmeyi ediyorum. Bu sunucu, bu etki tepki ve altında ana siteyi işleten kişi değilse, belirtilen denetleyicisine ileri.

Ve o çalışıyor gibi görünüyor olsa da, o kadar şey henüz çalışma yok, ama bu sorun çözüldü sanırım.

CEVAP
19 Ocak 2011, ÇARŞAMBA


Aslında Raylar http://guides.rubyonrails.org/routing.html#advanced-constraints başına 3, daha basit bir şey

1) lib/domain_constraint.rb özel kısıtlama bir sınıf tanımlayın:

class DomainConstraint
  def initialize(domain)
    @domains = [domain].flatten
  end

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

2) yeni bir blok sözdizimi ile güzergah sınıfını kullanın

constraints DomainConstraint.new('mydomain.com') do
  root :to => 'mydomain#index'
end

root :to => 'main#index'

ya da eski moda seçeneği sözdizimi

root :to => 'mydomain#index', :constraints => DomainConstraint.new('mydomain.com')

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • IGN

    IGN

    19 EYLÜL 2006
  • JonnyEthco

    JonnyEthco

    5 EKİM 2006