0

アプリケーションに wiki ページを追加する必要があり、Gollum gem について読みました。

私はRailsを初めて使用するので、個別にインストールされたgemを作業中のプロジェクトに統合する方法について完全にはわかりません。

gem をインストールした後の次のステップは何ですか? コントローラからどのようにアクセスできますか? 独自のコントローラー、ビュー、およびモデルを作成する必要がありますか?

さらに、単純な wiki ページを管理する方法の有効な例はどこにありますか? git リポジトリには例がありません

https://github.com/gollum/gollum

@編集

この投稿を例にとるとYourApplication、受け入れられた回答には何が含まれていますか?

Railsアプリ内にgithubのgollum wikiを正しくマウントするには?

これらの手順を実行した後、たとえば、ビューでマークダウン構文を使用でき、フォーマットされた html に変換されますか?

4

1 に答える 1

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を機能させるには、ルートから「wiki」ディレクトリを作成し、git init .そこで実行する必要があります

$ mkdir wiki
$ cd wiki
$ git init .

私が今抱えている問題は、これが認証やレイアウトなどのアプリの他のすべての機能を持たない単純なgollumのマウントであることです。どのユーザーがどのコミットを実行したかを反映する方法については、まだ作業中です。

今のところ、それはすべてサーバーの git アカウントの下にあります。補足として、 gollum-libを使用してgollumをアプリに統合する方が少し簡単に思えますが、フロントエンド機能を再実装する必要があります。


編集:ルートでDeviseを使用して認証を機能させます。

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

ただし、これには、Devise がまだ認証されていない gollum のルートにルーティングしようとするため、redirect_loop を取得し続けるという小さな問題が伴います。サインインページにリダイレクトされるように修正しようとしています。それまでは、認証されていないユーザーが wiki にアクセスすることを望まないため、これは私のユース ケースに役立ちます。

また、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'] Hash はキーを文字列に変更します。したがって、session['gollum.author'] Hash をシンボル キーで取得するには、最後のハックを 1 つ行う必要があります。

この投稿に従って、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    
于 2015-07-05T07:22:27.233 に答える