require 'gollum-lib' class WikiPage < ApplicationRecord belongs_to :tag, optional: true belongs_to :created_user, class_name: 'User', foreign_key: 'created_user_id' belongs_to :updated_user, class_name: 'User', foreign_key: 'updated_user_id' validates :title, presence: true, length: { maximum: 255 }, uniqueness: true def body page = wiki.page("#{ id }.md") page&.raw_data end def body= content, user: page = wiki.page("#{ id }.md") commit_info = { message: "Update #{ title }", name: user.id, email: 'dummy@example.com' } if page page.update(content, commit: commit_info) else wiki.write_page("#{ id }.md", :markdown, content, commit_info) end end private WIKI_PATH = Rails.root.join('wiki').to_s def wiki @wiki ||= Gollum::Wiki.new(WIKI_PATH) end end