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

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

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

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

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

https://github.com/gollum/gollum

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

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

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

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


person Victor Ferreira    schedule 02.07.2015    source источник
comment
Добавьте драгоценный камень в свой Gemfile: gem 'gollum', а затем запустите установку пакета. А затем я бы посмотрел на их тестовую страницу и увидел, как использовать гем: wiki.write_page('Имя страницы', :markdown, 'Содержимое страницы', коммит)   -  person Donato    schedule 02.07.2015


Ответы (1)


Недавно я попытался смонтировать Голлума в свое приложение. Вот коды для моих маршрутов.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