Заставим Gollum Gem работать с Rails 4

Мне нужно добавить вики-страницы в мое приложение, и я только что прочитал о драгоценном камне Gollum.

Поскольку я новичок в Rails, я не совсем уверен в том, как интегрировать гемы, установленные отдельно, в работающий проект.

Каковы следующие шаги после установки драгоценного камня? Как это будет доступно с контроллера? Должен ли я создать свой собственный контроллер, вид и модель?

Кроме того, где я могу найти действительные примеры того, как управлять простыми вики-страницами? В репозитории git отсутствуют примеры

https://github.com/gollum/gollum

@редактировать

взяв этот пост в качестве примера, что является YourApplication в принятом ответе?

Как правильно смонтировать githum gollum wiki внутри приложения Rails?

После выполнения этих шагов могу ли я использовать, например, синтаксис уценки в представлении, и он будет переведен в форматированный HTML?

1 ответ

Недавно я попытался смонтировать Gollum на свое приложение. Вот коды для моих маршрутов.

require 'gollum/app'

Rails.application.routes.draw do

    wiki_options = {:universal_toc => false}
    Precious::App.set(:gollum_path, Rails.root.join('wiki').to_s)
    Precious::App.set(:default_markup, :markdown) # set your favorite markup language
    Precious::App.set(:wiki_options, wiki_options)
    mount Precious::App, at:'gollum'

end

Я могу получить доступ ко всему Голлум, используя http://localhost:3000/gollum/.

Я должен создать каталог "вики" из корня и сделать git init . там, чтобы получить работу Gollum

$ mkdir wiki
$ cd wiki
$ git init .

У меня сейчас проблема в том, что это простая установка gollum без всех других функций в моем приложении, таких как аутентификация и макет. Все еще работаем над тем, как отразить, какой пользователь выполняет какой коммит.

На данный момент все это под учетной записью сервера git. С другой стороны, кажется, что немного легче интегрировать gollum в мое приложение, используя gollum-lib, но мне придется переопределить функции интерфейса.


Изменить: Таким образом, я получаю аутентификацию работает с использованием Devise в моих маршрутах.

authenticate :user do
   mount Precious::App, at: 'gollum'
end

Но это связано с небольшой проблемой, что он продолжает получать redirect_loop, потому что Devise пытается маршрутизировать к корню gollum, который еще не был аутентифицирован. Я пытаюсь это исправить, чтобы он перенаправлял на страницу входа. До тех пор он все еще подходит для моего случая использования, так как я не хочу, чтобы не авторизованные пользователи приходили на вики.

Я также добавляю способ получить правильного автора для каждого коммита в gollum, используя session["gollum.author"] передать информацию. Я сделал это путем создания контроллера сеанса из Devise после настройки пользовательских контроллеров

class Users::SessionsController < Devise::SessionsController
    # POST /resource/sign_in
    def create
        super do |resource|
            session['gollum.author'] = { name: resource.name, email: resource.email }
        end
    end

    # DELETE /resource/sign_out
    def destroy
        super { session['gollum.author'] = nil }
    end
end

Но по некоторым причинам сессия ['gollum.author'] Hash изменяет ключи в строку. Поэтому я должен сделать 1 последний хак, чтобы получить сессионный ['gollum.author'] хэш с символьными ключами.

Я следую этому посту и создаю класс App, который наследует Previous::App, и просто делаю изменения в моем rout.rb

# config/routes.rb
require 'gollum/app'
class App < Precious::App
  before { assign_author }
  helpers do
    def assign_author
      session["gollum.author"].symbolize_keys!
    end
  end
end

Rails.application.routes.draw do

  wiki_options = {:universal_toc => false}
  App.set(:gollum_path, Rails.root.join('wiki').to_s)
  App.set(:default_markup, :markdown) 
  App.set(:wiki_options, wiki_options)
  authenticate :user do
    mount App, at:'gollum'
  end
end    
Другие вопросы по тегам