- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby/Ruby on Rails

はじめに Edit

Rails 2.3対応で、WYSIWIG(FCKEditor)対応で、画像アップロード機能つきのブログプラグインを入れてみる。

Bloggity - Rails Blog Plugin Made Stupid Simple | Relentless Simplicity :: The Bonanzle Tech Blog

インストール Edit

Bloggity 公式サイト のドキュメントの"Installation Instructions"を見ながら作業します。

必要プラグインのインストール Edit

まずは、will_paginateを入れていなければインストールします。

sudo gem install will_paginate

そして、ライブラリをロードさせるために、config/environment.rbの最後のendの前あたりにconfig.gemを挿入しておきます。

1
2
3
  # load pagination library
  config.gem "will_paginate"
end

(attachment_fuもいる?)

プラグイン自身のインストールと初期設定 Edit

インストール手順の1〜4です。

プラグイン自身をインストール

script/plugin install git://github.com/wbharding/bloggity.git

db作成

rake bloggity:bootstrap_db 

画像やスタイルシートなどを/public/以下へコピー
rake bloggity:bootstrap_bloggity_assets
…なんだけど、うまく動かない(スタイルシート郡などが丸々コピーされずに、public/stylesheets/bloggity というファイル1個だけできるとか)ので、修正したのを作った。→本家ブログ・コメント欄でも指摘されている模様。
(本家に投げておこうと思う)

lib/tasks/bloggity_fix.rb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace :bloggity do 
        desc "(fixed)Copy the stylesheets and Javascripts used natively " +
           "by bloggity into host app's public directory"
        task :bootstrap_bloggity_assets_fixed => :environment do
                destination_root = RAILS_ROOT + "/public/"
    %w(stylesheets images).each{|asset|
      destination_dir = File.expand_path(File.join(destination_root, asset, 'bloggity'))
      FileUtils.makedirs destination_dir, :verbose => true
      FileUtils.cp_r(Dir[File.join(BLOGGITY_BASE_DIR, 'public', asset, '*')],
        destination_dir, :verbose => true)
    }
                puts "Files successfully copied!"
        end
end

そして、

rake bloggity:bootstrap_bloggity_assets_fixed

を実行。

といいますか、具体的に以下のようにコピーするだけですので手動でやってもらってもよいです。

  • vendor/plugins/bloggity/public → public/stylesheets/bloggity
  • vendor/plugins/images/public → public/images/bloggity

あとは、FCKEditorやjQueryなどを/public/以下へコピー

rake bloggity:bootstrap_third_party_assets

その他の初期設定など Edit

以下、インストール手順の5,6を進めていきます

(原文)5. Take a gander at bloggity/lib/bloggity/user_init.rb. This shows the methods that bloggity will use to interface with your user model (for blog permissions and such). Implement these in a sensible way in your user model. Don’t forget to copy the blog associations into your user.  (If you prefer, you could also copy the UserInit into a lib directory of yours, fill in the methods, and include it in your User model directly)

(vendor/plugin/)bloggity/lib/bloggity/user_init.rbの中身をコピって、Userモデルで実装するか、もしくは、UserInitをlib/以下に作って実装して、Userモデルにincludeするかってこと。

(原文)6. There are two methods in bloggity/lib/bloggity/bloggity_application.rb: current_user and login_required. Implement these in your application_controller.rb if you haven’t already.

(vender/plugin/) bloggity/lib/bloggity/bloggity_application.rb に current_user 、login_requiredを application_controller.rbで実装していないなら、実装しろ、と。

とりあえずは、簡単に終わりそうな6の方を先にやってみます。

まず、application_controller.rb でBloggity::BloggityApplicationをincludeしておく

application_controller.rb:

1
2
3
4
class ApplicationController < ActionController::Base
  include Bloggity::BloggityApplication

  :

次に application_controller.rb に current_user 、login_requiredを実装する。

以下は、ユーザー認証プラグイン ../Authlogic を使っている場合:
Authlogicのexampleを参考にした場合current_user はすでに実装されているはず。
あとは、login_requiredを実装します。
(Authlogicのサンプルの場合、user認証されているかどうか見てされていなかったらログイン画面に飛ばすメソッド=require_userでいいかな、と)

application_controller.rb:

1
2
3
4
5
private
  # Implement in your application
  def login_required
    require_user
  end

こんな感じ?

さて、後は本家ブログにも報告されているバグ修正など…(気づかずにハマった)

vendor/plugins/bloggity/app/controllers/blog_posts_controller.rb:

   def new
-    @blog_post = BlogPost.new(:posted_by_id => current_user, :fck_created => true, :blog_id => @blog_id)
+    @blog_post = BlogPost.new(:posted_by => current_user, :fck_created => true, :blog_id => @blog_id)
 		@blog_post.save! # save it before we start editing it so we can know it's ID when it comes time to add images/assets
 		redirect_to blog_named_link(@blog_post, :edit)
   end

:posted_by_id → :posted_by にするだけです

(まだ途中…)

とりあえず、これだけで、ブログに投稿、閲覧、ファイルのアップロードなどはできるはずです。

肝心のインストール手順の 5. の user_init.rb ですが、
これを弄ることで、ユーザー別に書き込み権限などの設定が可能になります。
(現状では全ユーザーが好きに書いたり消したりできてしまいます(ログインはしてないといけません。閲覧は誰でも可能))

大体どんな感じに動くかわかったので、
この辺はまた後日にやりたいと思います。

[TODO]:bloggityの user_init.rb を弄る手順を書く。

もうちょっとカスタマイズしたいなあ…。

簡単な使い方 Edit

ここでは少しだけ触れます。
詳しくは、公式githubの"Usage"を参照してください。

DBを除けばわかりますが、デフォルトで "main"というブログが作られています。

下記アドレスでアクセス可能です。

http://localhost:3000/blogs/main

ログインした状態で、下記にアクセスすると "main"に新規ポストができます。(ログイン状態で 前述の"main"にアクセスしたアドレスにも下記へのリンク"New blog post"が張られているはずです)
http://localhost:3000/blogs/1/blog_posts/new

ログインした状態で以下にアクセスすると"main"の他にブログ自体を新規作成できます。
(マルチブログが可能ということです)
http://localhost:3000/blogs/new

参考リンク Edit


No comment. Comments/Ruby/Ruby on Rails/bloggity?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2016-09-04 Sun 21:33:57 JST (470d)