Заставим 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