Gist Ubiquitifierは、 Ubiquityコマンドを配布するためのサーバが無くても、 気軽にUbiquityコマンドを配布できるようにするためのサービスです。

このたび、拡張パラメータを指定することによって、 コマンドのインストールページをカスタマイズできるようになりました。

例えば、以下のように、QueryStringにパラメータを指定します。

http://ubiquity.s21g.com/7630?name=s21g-blog-search&Author=Genki+Takiuchi&Home+Page=http://blog.s21g.com/genki

name以外のパラメータは、インストールページ上で 表示されるだけで、実際のインストールの動作には影響しません。

posted by Png genki on Sun 7 Sep 2008 at 07:58

Capistranoを使って、デプロイ時に必要なGemをインストールさせる方法を紹介します。

Rails-2.1以降、config/environment.rbで、config.gemを指定することによって、アプリケーションが依存するGemを簡単に指定することができるようになりました。 また、ここで指定したGemは、

   1  % sudo rake gems:install

とするだけで、インストールすることができます。

しかし、今のところ、capistranoでデプロイするときに この設定を考慮して自動的に足りないGemをインストールしてくれたりすることはないので、ちょっと残念な感じでした。

そこで、cap deployを実行した時に、必要なGemをサーバ上でインストールさせるためのレシピを紹介します。

config/deploy.rb

   1  namespace :deploy do
   2    task :restart, :roles => :app do
   3      sudo "rake -f #{current_path}/Rakefile gems:install"
   4    end
   5  end

上記のように、deploy:restartのタスクで、Rakeコマンドを実行させるだけです。 簡単ですね。

posted by Png genki on Sun 7 Sep 2008 at 06:43

s21g blog の次はFormula

今度はtridentを実行した結果、以下のようなWARNINGが出ました。

DEPRECATION WARNING: Inflector is deprecated! Use ActiveSupport::Inflector instead. See http://www.rubyonrails.org/deprecation for details. (called from formula/config/initializers/inflections.rb:5)

なるほど。とりあえず、いわれたとおりに修正してみます。 Globalの名前空間を掃除する方向なのかな。

とりあえず、それ以外は特に問題なく移行完了。

posted by Png genki on Sun 7 Sep 2008 at 03:34

s21gブログを動かしているEC2インスタンスのRailsを 2.1.1にバージョンアップしました。

Rails 2.1.1: Lots of bug fixes

Rails 2.1.1 is another maintenance release that includes a bunch of bug fixes and a fix for the REXML vulnerability. I’ve extracted all the changes from the CHANGELOGs into a single Gist. Enjoy!

以下、バージョンアップに関する作業ログです。 まずは trident を立ち上げると以下のようなWARNINGが。

DEPRECATION WARNING: Dependencies is deprecated! Use ActiveSupport::Dependencies instead. See http://www.rubyonrails.org/deprecation for details. (called from evaluate_init_rb at blog/vendor/plugins/background_fu/init.rb:1)

とりあえず最新版のBackgroundFu をあたってみます。 いつの間にかGemPluginになってる。よしよし。

config/environment.rbに以下を追記。

   1    config.gem 'ncr-background_fu',
   2      :lib => 'background_fu',
   3      :source => 'http://gems.github.com'

そして

   1  % sudo rake gems:install

そして不要になったプラグインを削除。

   1  % ./script/plugin remove background_fu
   2  svn: '/home/takiuchi/blog/vendor/plugins' is not a working copy

おっと。script/plugin removeはまだGitには対応してないのかな? しかし警告メッセージは出ましたが、当該ディレクトリはきちんと削除されていた模様。 もう一度tridentを立ち上げるが、また同様の警告が出た。 ということで、background_fuを forkすることにした

config/environment.rbを書き直す。

   1    config.gem 'genki-background_fu',
   2      :lib => 'background_fu',
   3      :source => 'http://gems.github.com'

これで警告は出なくなった。 rake -Tは特に問題なく実行できる。 rake testを実行。

DEPRECATION WARNING: follow_redirect is deprecated and will be removed from Rails 2.2 (If you wish to follow redirects, you should use integration tests) See http://www.rubyonrails.org/deprecation for details. (called from test_cleaning_up_blank_page at ./test/functional/articles_controller_test.rb:305)

とのこと。follow_redirectを使いたい場合は インテグレーションテストを使ってね、ということらしい。 いわれてみればその通りですね。 これを機にIntegrationTest周りのサポートが充実すると嬉しい。

とりあえず、該当箇所をIntegrationTestに切り出すことに。 その前にscript/generateコマンドがUpdateされてる可能性があったので、 rake rails:updateを実行してみたが、config/boot.rbが数行変わっただけであった。どうやらRubyGemsの最低要求バージョンが1.1.1以降となった模様。

IntegrationTestでは、follow_redirectではなく、follow_redirect! を使う必要があった。 と、ここまででテストでのWARNINGもすべて解消。

あとはローカル環境で動作テストをした後に、 cap shellで必要なGemをインストールしてcap deploy

WARNINGを消すためにひと手間かかりましたが、 基本的には特に大きな修正も必要なくアップグレードできました。

posted by Png genki on Sun 7 Sep 2008 at 01:58

最近、 NeverBlock の周辺の動きが面白い。

What is it all about?

NeverBlock is a Ruby library that allows developers to write non-blocking, concurrent code in a transparent manner. Meaning that you will keep coding in your traditional ways while you get the benefit of non-blocking IO operations.

LL futureの講演者控え室で、まつもとさん、高橋さんから、 その辺の話を伺う機会がありましたが、 NeverBlockはRuby-1.9普及の引き金になるかもしれない。 なぜなら、NeverBlockはRuby-1.9のFiberに依存したライブラリで、 Ruby-1.9が無いと利用できないからだ。

Building the Never Blocking Rails, Making Rails 12X Faster

They told you it can't be done, they told you it has no scale. They told you lies!

What if you suddenly had the ability to serve mutliple concurrent requests in a single Rails instance? What if you had the ability to multiplex IO operations from a single Rails instance?

No more what ifs. It has been done.

NeverBlockを使うとRailsが12倍速くなるらしい。

MySQLPlus: A Non-Blocking MySQL Driver for Ruby 1.8 and 1.9

MySQLPlus is billed as a new general purpose MySQL driver that supports "threaded access and async operations"

NeverBlockを使うために作られたMySQL用の新しいドライバらしい。

See Also

posted by Png genki on Thu 4 Sep 2008 at 09:32

Formula を使って、Ubiquityから数式を投稿するUbiquityコマンドを作ってみました。 こんな感じに、Previewも実装しています。

formula_u.png

これを使えば、いつでもどこからでも、数式を投稿することができます。 コマンドを実行すると、Formula上の数式ページにジャンプするので、 埋め込みようタグを使ってブログに投稿することも簡単にできます。

インストール

formula用Ubiquityコマンドは、以下のページからインストールできます。

配布には拙作の Gist Ubiquitifier を使っています。

ご注意

スパムプログラムからの投稿などを避けるために、 SSL+Basic認証による認証をかけています。

本コマンドを最初に実行する時に、Basic認証のダイアログが出ます。 Basic認証に使うユーザ名とパスワードは、 Formula上でコメントをする時に使ったものをご利用ください。 Formula上に1つでもコメントがあれば、本コマンドが利用可能になります。

posted by Png genki on Thu 4 Sep 2008 at 02:54

Rails-2.0.2以降から存在するBasic認証機能ですが、 この挙動をテストする方法をメモしておきます。

   1  request.env['HTTP_AUTHORIZATION'] =
   2    'Basic ' + Base64::encode64("name:password")

テストコードのなかで、上記のように環境変数を設定してから アクションを実行すればOkです。

posted by Png genki on Wed 3 Sep 2008 at 09:09

早速 GoogleのChrome を使ってみました。 Firefoxでは3秒かかるこのブログのレンダリングも、 2秒程度で完了するなど、非常に軽快に動作しますね。 デフォルトでFirebug的な開発環境がついてくるのも素晴らしいです。

Google ChromeのFAQ を読んでみたところ、

18. How can I include my site's search in Google Chrome's search options?

By providing an OpenSearch description document (OSDD), you enable Google Chrome to include your site in the list of search engines in the browser. For more information about OpenSearch, please visit http://www.opensearch.org.

と書かれていたので、XMLファイルを色々変更して試してみましたが、 なぜかまだOpenSearchを検出してくれないようです。 Beta版だからでしょうか。

自動検出はしてくれませんでしたが、 アドレスバーを右クリックして「検索エンジンを編集」から、 検索エンジンを追加することで、同様のことが実現できそうです。

ちなみに、s21gブログの検索をGoogle Chromeから実現するためには、 キーワードとともに、URLを以下のように指定すればOkです。

  • http://blog.s21g.com/?query=%s

これによって、以下のようにアドレスバーから、 指定したキーワードに続いて検索ワードを入力することにより、 s21gブログ内を検索できるようになります。

s21gsearch.png

必要な機能は実装されているようなので、 あとは自動検出ができたらいいんですけどね。 何か方法があるのかな。

posted by Png genki on Wed 3 Sep 2008 at 05:45

s21gブログが、記事の投稿時と記事を修正した時に Google Blog Search にPingを送るようになりました。

よろしくお願いします。

posted by Png genki on Wed 3 Sep 2008 at 02:08

たびたび参照したくなるのでチートシート的にまとめておきます。 より詳細な情報は Phusion Passenger users guide をご確認ください。

  • PassengerRoot <directory>
  • RailsBaseURI <uri>
  • RailsAutoDetect <on|off>
  • RailsAllowModRewrite <on|off>
  • RailsRuby <filename>
  • RailsEnv <string>
  • RailsSpawnMethod <string>
  • RailsMaxPoolSize <integer>
  • RailsPoolIdleTime <integer>
  • RailsMaxInstancesPerApp <integer>
  • RailsUserSwitching <on|off>
  • RailsDefaultUser <username>

See Also

posted by Png genki on Tue 2 Sep 2008 at 05:42
Contents
Gist Ubiquitifierのインストールページのカスタマイズ性が向上しました
デプロイ時に必要なGemをインストールさせる方法
FormulaをRails-2.1.1対応にしたメモ
Rails-2.1.1にアップデートしました
NeverBlockの周辺の動き
Ubiquityから数式を投稿するコマンドを作りました
RailsのBasic認証をテストする方法
Google ChromeがOpenSearchを自動検出してくれない
s21gブログがGoogle Blog SearchにPingを送るようになりました
Passenger(aka mod_rails)の設定項目
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
瀧内元気: おお、チェックしてみます。thx! '11-12
overisland: Reeder for iPhone もこの UI を実装していますね。 '11-12
瀧内元気: その情報は見たのですが、以下のサイトによると、現在はまた必要になってるっぽいんですよね。 ... '11-12
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ