Недавно я попытался смонтировать Голлума в свое приложение. Вот коды для моих маршрутов.rb
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/.
Мне нужно создать каталог 'wiki' из корня и выполнить там 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
Но по некоторым причинам хэш session['gollum.author'] изменяет ключи на строку. Поэтому мне нужно сделать 1 последний взлом, чтобы получить хэш session['gollum.author'] с символьными ключами.
Я подписан на этот пост и создайте класс App, который наследует Previous::App, и просто внесите изменения в мои маршруты.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
person
NNg
schedule
05.07.2015