让Gollum Gem使用Rails 4

时间:2015-07-02 02:38:59

标签: ruby-on-rails ruby git gollum-wiki

我需要在我的应用程序中添加维基页面,而我只是阅读了关于咕噜宝石的内容。

由于我是Rails的新手,我不完全确定如何将单独安装的gems与工作项目集成。

安装宝石后的下一步是什么?如何从控制器访问?我是否必须创建自己的控制器,查看和建模?

另外,我在哪里可以找到有关如何管理简单维基页面的有效示例? git存储库缺少示例

https://github.com/gollum/gollum

@edit

以这篇文章为例,接受答案中的YourApplication是什么?

How to properly mount github's gollum wiki inside a Rails App?

按照这些步骤后,我可以在视图中使用降价语法,它会被翻译成格式化的html吗?

1 个答案:

答案 0 :(得分:0)

最近,我试图将Gollum安装到我的应用程序上。以下是我的routes.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/.

访问整个 gollum

我必须从root创建一个'wiki'目录并在那里git init .进行 gollum 工作

$ mkdir wiki
$ cd wiki
$ git init .

我现在遇到的问题是,这是一个简单的 gollum 安装,没有我的应用程序中的所有其他功能,如身份验证和布局。仍在研究如何反映哪个用户执行哪个提交。

截至目前,它都在服务器git帐户下。另外,使用 gollum-lib gollum 集成到我的应用程序似乎更容易,但我必须重新实现前端功能。

编辑:所以我通过在我的路线中使用Devise来进行身份验证。

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

但这带来了一个小问题,它不断获取redirect_loop,因为Devise尝试路由到尚未经过身份验证的gollum的根目录。我正在尝试修复它,以便它将重定向到登录页面。在此之前,它仍然用于我的用例,因为我不希望未经身份验证的用户访问维基。

我还添加了一种方法,通过使用session["gollum.author"]传递信息来为gollum中的每个提交获取正确的作者。我是通过在Configuring Custom Controllers

之后创建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'] Hash将密钥更改为字符串。所以我必须做最后一次黑客攻击才能使用符号键获得会话['gollum.author']哈希。

我遵循这个post并创建一个继承Previous :: App的App类,并在我的routes.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