Указание идентификатора приложения facebooker по домену

У меня есть веб-сайт RoR по адресу domain1.com, который использует приложение facebook, связанное с этим доменом.

Я хочу, чтобы domain2.com указывал на тот же сервер, что и domain1.com, поэтому domain1.com/foo эквивалентно domain2.com/foo.

Очевидно (я думаю), мне нужно сделать второе приложение facebook, потому что приложение, связанное с domain1.com, не будет работать, если они посетят сайт под domain2.com.

Однако я не знаю, как указать facebooker2 в его facebooker.yml использовать одно приложение, если запрос поступает с одного хоста, или другое приложение, если он поступает с другого.

Есть ли способ сделать это или сделать что-то, что дает тот же результат?


person B_.    schedule 15.01.2011    source источник


Ответы (1)


Facebooker2 не имеет встроенной поддержки для этого, но вы можете сделать так, чтобы он это поддерживал!

Вам нужно будет переопределить некоторые функции в этом файле:

facebooker2/lib/facebooker2.rb

Конкретно этот метод:

def self.load_facebooker_yaml
  config = YAML.load(ERB.new(File.read(File.join(::Rails.root,"config","facebooker.yml"))).result)[::Rails.env]
  raise NotConfigured.new("Unable to load configuration for #{::Rails.env} from facebooker.yml. Is it set up?") if config.nil?
  self.configuration = config.with_indifferent_access
end

Измените первую строку, чтобы сказать:

config = YAML.load(ERB.new(File.read(File.join(::Rails.root,"config","facebooker.yml"))).result)[::Rails.env][::request.domain]

Затем добавьте новый уровень в файл facebooker.yml, примерно так:

production:
  domain1.com:
    app_id: ####
    secret: #####
    aki_key: #####
  domain2.com
    app_id: ####
    secret: #####
    aki_key: #####
development:
  localhost:
    app_id: ####
    secret: #####
    aki_key: #####

Дайте мне знать, как это происходит.

person Marshall Æon    schedule 16.01.2011
comment
Имейте в виду, что вам не следует редактировать плагин напрямую, чтобы вы могли обновить его позже. Вы должны создать свой собственный файл lib. - person Marshall Æon; 17.01.2011
comment
Я ждал, чтобы принять этот ответ, пока не попробовал его, но похоже, что какое-то время я не буду реализовывать несколько приложений. Тем не менее, это выглядит как солидный ответ, поэтому я приму его непроверенным. Спасибо - person B_.; 15.02.2011