【问题标题】:Make Gollum Gem work with Rails 4让 Gollum Gem 与 Rails 4 一起工作
【发布时间】:2015-07-02 02:38:59
【问题描述】:

我需要将 wiki 页面添加到我的应用程序中,并且我刚刚阅读了 Gollum gem。

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

安装 gem 之后的下一步是什么?如何从控制器访问它?我必须创建自己的控制器、视图和模型吗?

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

https://github.com/gollum/gollum

@编辑

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

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

按照这些步骤后,我是否可以在视图中使用例如 markdown 语法并将其转换为格式化的 html?

【问题讨论】:

  • 将 gem 添加到您的 Gemfile: gem 'gollum' 然后运行 ​​bundle install。然后我会查看他们的测试页面,看看如何使用 gem:wiki.write_page('Page Name', :markdown, 'Page contents', commit)

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


【解决方案1】:

最近,我尝试将 Gollum 安装到我的应用程序中。这是我的路线的代码。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

我必须从根目录创建一个 'wiki' 目录并在那里执行 git init . 以使 gollum 正常工作

$ mkdir wiki
$ cd wiki
$ git init .

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

截至目前,一切都在服务器 git 账户下。在旁注中,使用 gollum-libgollum 集成到我的应用程序似乎更容易一些,但我必须重新实现前端功能。


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

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

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

我还添加了一种方法来获取 gollum 中每个提交的正确作者,方法是使用 session["gollum.author"] 传递信息。我通过在 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 将键更改为字符串。所以我必须做 1 次最后的破解来获得 session['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    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2013-10-25
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多