Можно ли включить Nesta CMS в приложение Rails3? - PullRequest
4 голосов
/ 06 октября 2010

Я бы хотел "смонтировать" приложение Nesta CMS на приложение Rails3. Возможно, это может быть приложение Nesta Sinatra, которое должно быть монтируемым в стойку, ... но как бы вы это сделали?С чего вы начнете?У кого-нибудь есть опыт по этой теме?Предлагаемые документы?

Ответы [ 2 ]

5 голосов
/ 06 октября 2010

Привет, Лука.Я хотел написать это в течение месяца или двух.Вам просто нужно смонтировать Nesta как приложение Rack, используя Rails Metal.

Имейте это в виду:

http://railscasts.com/episodes/222-rack-in-rails-3

Вы сможете обратиться кNesta в ваших маршрутах, ссылаясь на него как Nesta :: App (я только объединил коммит, который позволяет вам сделать это в master неделю назад или около того, поэтому убедитесь, что вы в курсе самого последнего кода на github).Для того, чтобы сделать эту работу, все, что вам нужно сделать, - это запрос файла app.rb от Nesta.

Я еще не пробовал это с Rails 3, но я делал это некоторое время.с Rails 2. Если у вас есть какие-либо проблемы, отправьте мне пинг по списку рассылки (nesta@librelist.com).

Для тех, кто интересуется, как добиться того же с Rails 2.3, я использую код, которыйвыглядит так (в lib / nesta_metal.rb):

require File.join(File.dirname(__FILE__), *%w[.. vendor nesta app])

class NestaMetal
  def initialize(app)
    @app = app
  end

  def call(env)
    status, headers, response = Nesta::App.call(env)
    (status == 404) ? @app.call(env) : [status, headers, response]
  end
end

Приветствия,

Грэм

3 голосов
/ 06 октября 2010

Вот код, который я использовал, чтобы он работал в моем приложении:

MyRailsApp::Application.routes.draw do
  mount MyNestaSite.new => "/blog"
  match '/' => "static#welcome" # and whatever other rails routes you want
end

В то время ему также требовалась последняя версия Sinatra от github, так как версия, доступная через rubygems, содержала ошибку в том, как она обрабатывает переменные среды, поэтому я добавил это в свой Gemfile:

gem "sinatra", :git => "http://github.com/sinatra/sinatra.git"
...