以前要望があった気がしたので、 PokéDia-1.2のアップデート を記念して、 MacOSXのSafariで自動的に選択した文字列をコピーするSIMBLプラグイン SafariCopyOnSelect を作ってみました。

SafariCopyOnSelect.bundle.zip

インストール方法

  1. まずはSIMBL をインストールします
  2. 上述のSafariCopyOnSelect.bundle.zipファイルをダウンロードして展開します
  3. 展開されたSafariCopyOnSelect.bundleを、 ~/Library/Application Support/SIMBL/Plugins/の下にコピーします。 ディレクトリが無い場合は作成してください。
  4. Safariのプロセスを終了し、Safariをもう一度起動します

これでOKです。 一時的にこの機能をオフにする場合は、 以下のようにメニューから「Copy On Select」をオフにしてください。

ss01

オンに戻せば再び有効化されます。

posted by Png genki on Thu 19 Feb 2009 at 18:39

長らくお待たせしておりました、PokéDiaのバージョン1.2が、 iTunesストアからアップデート可能になりました。

ss

PokéDia-1.2 (iTunes Store)

PokéDia-1.2では、重要なバグ(稀にメモが消える、メモの表示が乱れる事がある)の修正と、一覧表示機能、検索機能の実装を行いました。日本語でお使いのiPhoneでは絵文字を使うことも出来ます。

今後とも、頂いているご要望をもとに、さらなる機能改善をおこなって参りますので、ご愛顧のほどをお願いいたします。

See Also

posted by Png genki on Thu 19 Feb 2009 at 12:43

thinを使ってmerbアプリケーションをrackupする方法のメモです。 以下のようなconfig.ruファイルを用意します。

   1  # config.ru
   2  require 'rubygems'
   3  require 'merb-core'Merb::Config.setup(
   4    :merb_root   => File.expand_path(File.dirname(__FILE__)),
   5    :environment => ENV['RACK_ENV'])
   6  Merb.environment = Merb::Config[:environment]
   7  Merb.root = Merb::Config[:merb_root]
   8  Merb::BootLoader.run
   9  
  10  use Merb::Rack::Static, Merb.dir_for(:public)
  11  run Merb::Rack::Application.new

あとは、以下のようなコマンドで起動します。

   1  % RACK_ENV=development thin -R config.ru start

posted by Png genki on Thu 19 Feb 2009 at 02:54

   1  % git pull <repo-name> <branch>
は、
   1  % git fetch <repo-name>
   2  % git merge <repo-name>/<branch>
と同じ事です。

git pull --rebaseというのもよく見かけますが、これは

   1  % git fetch <repo-name>
   2  % git rebase <repo-name>/<branch>
と同じ事です。mergeの代わりにrebaseを使います。

See Also

posted by Png genki on Thu 19 Feb 2009 at 01:18

githubなどを使っていると、簡単にリポジトリをフォーク出来るので、 有名なプロジェクトになると、数十のリポジトリが並走している事もしばしばです。 多くの場合、フォークのツリーをたどっていけば、ルートになるリポジトリが見つかるのですが、ルートになっているプロジェクトのコードが最新であるとは限りません。 フォークしたリポジトリの方にバグの修正が入っていたり、パッチがあたっていたりする事も良くあります。

そのような場合には、

   1  % git remote add <repo-name> <url>
のようにして、関心のあるremoteリポジトリを登録しておきます。 登録が済めば、
   1  % git fetch <repo-name>
でリモートのブランチを手元に持ってくる事が出来ます。 例えば手元のmasterとリモートのmasterの差異を知りたければ、

   1  % git diff master..<reponame>/master

のようにする事で調べられます。

posted by Png genki on Thu 19 Feb 2009 at 00:59

Merbはコマンドラインから-c 3のように指定する事で、 クラスターとして起動出来ますが、これを設定ファイルの 中から行う場合には、以下のように書けば良いようです。

config/init.rb

   1  Merb::Config.use do |c|
   2   ...
   3    c[:port] = 4001
   4    c[:cluster] = 2
   5  end

あとは、普通にmerbコマンドで起動するだけです。 config/environments/production.rbなどで設定しても良いですね。

posted by Png genki on Tue 17 Feb 2009 at 01:04

今月もRails勉強会 に行ってきました。

Merbのセッションをやる予定でしたが、1.9.1対応の話とネタが被ったのでマージしました。

  • ruby-1.9.1で、merbのspecが通らなくなった
    • そもそもrspecがまだruby-1.9.1に対応してない
    • ubuntuだとGemでインストールしたコマンドが実行出来ない
      • ruby-1.9.1のバグ?

ということで、会場ででてきた修正案

   1  static int
   2  file_load_ok(const char *path)
   3  {
   4      return eaccess(path, R_OK) == 0 && rb_file_file_p(Qnil, rb_str_new2(path));
   5  }

eaccessでチェックしてるだけだったので、環境によっては ディレクトリをloadしようとしてエラーが発生してしまうようです。 この問題が発生する典型的な例としては、

   1  lib/foo/
   2  bin/foo

というようなディレクトリ階層にある場合に、load "foo"を行う場合が挙げられます。 結構深刻な問題だと思うので、早いうちに修正版のruby-1.9.1がリリースされると良いです。

懇親会ではCOBOLの話をしてました。 メタコボラーの時代がくる!?

posted by Png genki on Mon 16 Feb 2009 at 14:29

ちまたで話題のCanonical URLですが、既存のRailsアプリケーションを Canonical URLに対応させるためのプラグインを紹介します。

config/environment.rbの中で、以下の行を追加します。

   1  config.gem 'mbleigh-canonical-url',
   2    :lib => 'canonical_url',
   3    :source => 'http://gems.github.com'

続いて、sudo rake gems:install でGemをインストールします。 次に、ViewのHEADの中に以下の一行を追加します。

   1  <%= canonical_link_tag %>

最後に、Controllerのshowアクションの中で、 respond_toやrenderの呼び出しより上に以下の一行を追加します。

   1  canonical_url article_path(@article)

これはarticlesというリソースの例ですが、 実際のアプリケーションで使っているリソース名に置き換えてください。

これで完了。 Slagを使っていたりする場合に、Permalinkをcanonical urlとして指定したりするのが典型的な使い方になるのかな。

See Also

posted by Png genki on Sat 14 Feb 2009 at 22:40

gemファイルはRubyのライブラリ配布用のアーカイブ的なファイル形式ですが、 今回はこれを展開して中身を取り出す方法を紹介します。

まずは、適当なgemファイルを用意して、tarコマンドで展開します。

   1  % tar xvf foo.gem
   2  % ls
   3  data.tar.gz         metadata.gz

このように、data.tar.gzとmetadata.gzという二つのファイルが出てきます。

続いて、data.tar.gzを展開すると、gemspecファイルに記載されている ファイル群一式が展開されます。

   1  % tar data.tar.gz

metadata.gzは、gzipで圧縮されたYAML形式のgemspecです。

追記

gemファイルを展開する方法としては、gem unpackという専用のコマンドがあるようです。見落としていた。

posted by Png genki on Sat 14 Feb 2009 at 16:35 with 2 comments

Ruby-1.9.1がリリースされて以来、 @maiha さんと一緒にMerbのRuby-1.9.1対応のための作業を続けてきましたが、 ようやくMerbアプリケーションをRuby-1.9.1で動かす事ができました。

ss http://merbi.st

決定的に重要だったのは、@ko1_twitterさんが作ってくれた methoparaです。 これによって、merbが抱えていたmerb-action-argsに関する問題を解決するための道が開かれ、Ruby-1.9.1対応を行うためのモチベーションが高まりました。

今回のRuby-1.9.1対応のために作ったパッチや、修正版のGemなどの多くは github上に残っています (http://github.com/maiha, http://github.com/genki) 残りは、http://merbi.st/pluginsで公開されています。

Good luck!

posted by Png genki on Sat 14 Feb 2009 at 15:06