それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。
") }) jQuery.noConflict()(document).ready(function(){ /**ページャーが気に入らないので修正**/ //やるべきこと // pre・next のいれかえ jQuery('span.pager-next').insertAfter('span.pager-prev') // pre/next に矢印を入れる jQuery('a[rel=next]').text(jQuery('a[rel=next]').text()+"> ") jQuery('a[rel=prev]').text("< "+jQuery('a[rel=prev]').text()) // pre/next をヘッダにもってくる //jQuery(".date.first").css("display","inline-block") jQuery('div.permalink.pager').clone().insertAfter(".date.first") jQuery("header .pager a").css("padding","0px 15px"); //pre/next をAjaxで取得してタイトルを取る。 //取得したタイトルをpre/next のタイトルに jQuery('span.pager-next,span.pager-prev').css("display","inline-block") jQuery('span.pager-next,span.pager-prev').css("width","250px"); jQuery('span.pager-next,span.pager-prev').css("overflow", "hidden"); jQuery('span.pager-next,span.pager-prev').css("white-space", "nowrap"); jQuery('span.pager-next,span.pager-prev').css("text-overflow", "ellipsis"); jQuery("a[rel=next],a[rel=prev]").each(function(idx,e){ var anchor = e jQuery.get(anchor.href,null,function(html){ jQuery(anchor).text() var title = jQuery("
").html(html).find(".entry-title").text().trim() jQuery(anchor).attr("title", title); text = jQuery(anchor).text() text = text.slice(0,10); text = text.replace(/の記事/, "の記事 ["+title+"] "); jQuery(anchor).text(text) }) }); }); })

gemパッケージ の作り方

rubyでコードを書いてるとライブラリのパスだとか,モジュールの依存関係とかめんどくさくなってくる.あとGithubなどに置いておきたくなる.github にコードを置いてgem パッケージにしたい.*1ライブラリのロードパスを解決したい

2011-05-17追記

rubygems のページを見ると, jeweler /gem push でやれって書いてあった。
http://help.rubygems.org/kb/gemcutter/publishing-your-own-rubygem

gem を作るなら以下の、私の記事のやり方で構わないです。rubygemsに公開するなら上記URLに従う方が良いです.

gemの作り方

・gem作成用のパッケージをインストール
・Gemの名前を決める
・Gemのひな形を作る
・空っぽのパッケージを作ってみる
・Libにソースを書く
・テストのソースを書く
・テストを実行する
・パッケージ作成

Gem作成用パッケージ newgem をインストール

$ gem install rubyforge
$ gem install newgem

ここでたくさんモジュール突っ込んでくれる.

Gemのひな形を作る newgemコマンド

今回はnodaと言う名前のパッケージを作ります. *2

$ newgem noda

RakefileのFIXMEを編集する

  self.developer 'takuya_1st', '[email protected]'
  self.post_install_message = 'PostInstall.txt' 
  self.rubyforge_name       = self.name # TODO this is default value
  # self.extra_deps         = [['activesupport','>= 2.0.2']]

README.rdocのFIXMEを編集する

Copyright (c) 2011 takuya_1st 

パッケージを作る

まずはなにもない空っぽのパッケージを作ってみます.

$ rake package 

簡単!!

テストを書く

test_helper.rb がすべての基本になる。

test_helper.rbに次の行を追加

require 'stringio'
require 'test/unit'
require 'rubygems'
require 'drb/drb'
require File.dirname(__FILE__) + '/../lib/noda'

##ここ以下にlibにおいたソースを追記する

require 'noda'                   #テストで使うパッケージをロードする
require 'noda/table'             #
include Noda               #include は僕が好きで入れてます

テストファイルの書き方

テストファイルでは先ほどのヘルパーを読み込んでおけばいい

テストファイルの例

test_table.rb

require File.dirname(__FILE__) + '/test_helper.rb'

class TestPageList < Test::Unit::TestCase
  def test_table_put

上記のようにhelperをテストファイルから読み込めばいい.

テストの実行

$ rake test

rakeでテストを実行する.rake便利!

ライブラリの作成

["./lib", "./lib/noda"]の二つのディレクトリが作られている。

./lib/noda.rb ←これは、モジュール必須ライブラリや共通読み込み用に使うみたい.
モジュールが読込のひな形が作ってあった。便利ねー


./lib/noda ←ここにコードを書いていく。

./lib/noda.rb

$:.unshift(File.dirname(__FILE__)) unless
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
module Noda
  VERSION = '0.0.1'
end

自分の書いたライブラリの置き場所

./lib/noda/my_class.rbのように書いていきます.
自分が書くときは一階層下げてlib/noda以下にファイルを書いていきます.

module Noda
	class MyClass
		def initialize
		#do something
		end
	end
end

のように書いていく

コマンドを作るには

./script/generate コマンドでひな形を作ります.

$ ./script/generate executable my_command_name
      create  bin
      create  lib/my_command_name
      create  bin/my_command_name
      create  lib/my_command_name/cli.rb
      exists  test
      create  test/test_my_command_name.rb

たくさんファイルができあがるので、lib/my_command_name/cli.rb にコマンドの実体を書くと言い.

できあがったら rake package

ソースコードが出来たら

rake package 

してできあがりです.

*1:githubはgem builderサポート辞めちゃったみたいよ。

*2:大阪の野田のマックでこのエントリ書いてるので