cutagemをrake0.9.0以降に対応させる

なんか deprecated だよっつって gem が作れなかったので調べてみました。

0.9.0 から

Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require 'rubygems/package_task')

だそうです。

cutagemベースの拙作shlauncherなんかも同様ですが、以下のように書き換えると gem package を作ることができます。

-require 'rake/gempackagetask'
+require 'rubygems/package_task'
-Rake::GemPackageTask.new(spec) do |p|
+Gem::PackageTask.new(spec) do |p|

rubygems の方に Gem::PackageTask が追加されたのはなんと 2009-04-15 だそうで、もう2年半前じゃん…。

gem server が簡単すぎてビビる件

さて先日cutagemのおかげでグイグイgemが作れるようになったわけですが、せっかく作った gem が手元にだけあっても仕方ないわけです。gem 化するメリットはインストールが楽、つまり deploy が楽ということだと思っています。

まぁ公開しているものなら rubyforge や github1 に置けばいいわけですけど、公開できないものだっていっぱいあるわけです。というかイントラでこそきちっとパッケージ管理したいと最近はよく思うわけです。

というわけで、まず基本はるびまですな。今さらながらるびまが便利すぎる。ありがとうございます。マジで。

Rubyist Magazine - シリーズ パッケージマネジメント 【第 2 回】 RubyGems (2)

ここに gem server というのが出てきますが、よく読むとこれ WEBRick を使っている。えー、WEBRick の管理なんかしなきゃいけないの?と思ったらどうも話が違うようで、ちょっと長いけど引用すると、

webrick のインスタンスを個別にに走らせる代わりに既にある自前のウェブサーバを使いたいかもしれない。問題ない。 $ ssh chad@mywebserver.com password: mywebserver$ cd /web/server/document/root mywebserver$ mkdir gemserver mywebserver$ cd gemserver mywebserver$ mkdir gems mywebserver$ scp chad@myotherhost.com:/home/chad/some_cool_lib-0.0.1.gem gems/ chad@myotherhost.com's password: some_cool_lib-0.0.1.gem 100% 11KB 11.0KB/s 00:00 全て準備できた。お預けだった gem server の話に戻ろう。 $ generate_yaml_index.rb $ ls gems yaml yaml.Z これだけ! これでインターネットに繋がっているコンピューターならどこからでもインストールできる:

ん?

んん?

これって要するに

DOCUMENT_ROOT 以下に package 本体と index がただ置いてあるだけ

じゃないのか? マジか。ステキすぎる。gem の server ってこんな簡単に作れるのか。てゆーか Web サーバがすでに動いている場合は実際には server 作ってないよな。index を作ってるだけだ。

すげぇ。簡単すぎる。

毎度毎度こういう言い回しに飽き飽きしてる人も多いかもしれないけど、pear の channel-server に爪のアカ飲ましてやりたい。確かに gem の場合はクライアントサイドの負荷が高いけど、pear の channel-server は MySQL を要求するとか準備がやたら面倒くさいうえにいつまでもバージョンが上がっていかず、本当にセットアップしていいんかすげー不安にさせる。結果、URI package という、package をポンと置くだけの仕組みに流れちゃったりするんだけど、そうなると install も upgrade も downgrade も直接 URI を指定しなきゃいけない、つまりクライアントサイドからは新しいバージョンがあるのかどうかも全然分からないというダメダメな状況になっちゃう。

でも gem はこの URI package と同じ仕組みで package の検索も upgrade も自動化できてる。

これでいいじゃん。

実際にはるびま本文中に出てきた generate_yaml_index.rb というものはすでになくて、代わりに

gem generate_index

というコマンドができているのでこれを使うといいです。使いやがれ。

これは便利だ!

cf.

  1. 今なら gemcutter.org 

Reminderfox が便利かも

mozdev.org - reminderfox: index

※ まだ使ってみてないです。インストールしただけ。

以前 Common Notifier API 妄想 なんてのをぶち上げてみたりしてるわけだけど、実はこれでいいのかもしんない。

  • Reminderfox に notifier とスケジュール追加の機能があり
  • iCal サーバと通信できるのでフル機能のカレンダーアプリのように凝る必要がない
  • 元が MUA なのでメールドリブンの予定管理に最適

てな印象。早速使ってみます。Thunderbird 2.0 のタグ機能とも連携してますな。当然カレンダーに載っからない TODO 管理には使えないけど。

不祥事の意味が違うんだし

明徳は部員の不祥事、しかも喫煙という違法行為つき。これは弁解の余地なし。1駒大苫小牧は部長の暴力であって部員が起こした問題ではない。部長が責任を取るだけでよいのでは。父兄の側が対応は大会後でいいと言ったという報道が事実なら。

それでいいとは思わないけど、どこの体育会系組織も多少の暴力はそらあるわさ。問題はそれが当然と思われているくせに高校野球などの場合にのみタブーとなることなのか、そもそもそれが当然という状態なのか。その辺から考え直さないと。単にあっちゃならんことだから処罰するってんじゃー不健全だと思うなぁ。

合理的なプロセスなしに全体を押さえつけてしまえば、押さえつけられた組織が陰湿化するのは過去を振り返れば容易に想像がつくってもんだ。厳しい社会体制の国家を思い浮かべても納得がいくし、校内暴力からいじめに至る教育問題の歴史を紐解いてもいい。

  1. だからと言ってチーム全体の連帯責任になるのもどうかという気がしないではないが。知ってた大人は責任を取るべきだと思うけどね。 

BlueCloth

Just another Ruby porter なわたなべさんとこ から。

Markdown という setext のような書式付きテキストを解釈して HTML を出力するスクリプトの Ruby 版。しかもライブラリとして使えるので本家より応用範囲は広い。残念ながら table は書けないが、これなら巷の Wiki フォーマットと違ってメールでもそのまま送って違和感がない。

残念なのはこれを使った Wiki がないことくらいか。作れって? えー。

YAML Ain't Markup Language

Mobo-dev メーリングリストで流れていたのと、たまたま textfile.org で見かけたので、ちょっと探ってみる。

XML について少しでも知っているなら

を押さえたうえで本家 http://www.yaml.org/ を眺めるといいかもしんない。で、へーと軽く思ったら次はこれだ。

まだ読んでないけど、developer Works なので外れってことはたぶんないと思う。

syck は PHP, Python, Ruby に対応したライブラリ1

参考

誰か awk で処理系書かないかなぁ。。。なんてことを考えてみるてすつ。

  1. Ruby 1.8 で取り込まれた。Ruby 1.8 はこの他に iconv 対応を標準で果たしているので、utf-8 な yaml をすごく手軽に扱い始めることができる。 

ようやくデジカメげと

まだモノは手にしてないけど。

あと要るのは

  • カードリーダ 2000〜3000円くらい?
  • 128MB SDカード 3000〜4000円くらい?

ですか。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm