このブログのLokkaのテーマをslimにしてみた。

docs-komagata-org/public/theme/komagata/layout.slim at master · komagata/docs-komagata-org

以前はバグが多かった印象だけど最近rails案件で使って特に問題なかったので。

従軍記のLokka移行をやっていますが、それを実験台としてさっさとactive-recordブランチをmasterにしたい。あとちょっとなんですけどねー。datamapperからactive-recordへの移行になるからexport/import機能が必要になる。フォーマットはxmlかymlか?とにかくactiverecord化がまずは完了しないと何も進められないのでがんばろう。

herokuのbamboo stackからcedar stackへのアップグレードは無理なので新規に作ってDBを移行後ドメインを切り替えた。

tapsを使ったdb:pull/db:pushはruby1.9.2とruby.19.3の間のmarshal互換性の断絶で無理なので(このbamboo stackはruby1.9.2で動いてる)pgbackups(pg_dump)を使う。

pgbackupsを使ってpg_dumpを取得したあと、postgres.heroku.comの下記の右側にある矢印アイコンのメニューの中のpg_restoreを選ぶとrestoreコマンドが親切に出るのでそれでさっきのdumpを読み込んで完了。

Lokkaももうちょっとドラスティックに変えていこうかなと思っています。仕事外の時間でちまちまと進めます。

forkしたreposへのcommitはgithubの活動の証(プロフィールページが緑になる)にならないみたいなのでlokkaをorganizationに移す時にowner transferしたんですが、そのせいで誰がcollaboratorだかわからなくなった。

% git shortlog -s -n
   248  Masaki KOMAGATA
   167  Masaki Komagata
    89  yayugu
    54  tomykaira
    52  komagata
    32  Teppei MACHIDA
    27  Ayumu AIZAWA
    24  Junya Ishihara
    23  nkmrshn
    22  Shota Fukumori (sora_h)
    18  machida
    13  Takeshi Yabe
    12  arton
    10  tkawa
     8  八木都志郎
     7  Satoshi Ebisawa
     6  Hiroshi Yoshida
     6  Junya Ogura
     5  Masanori Kobayasi
     5  teppei machida
     5  森井ゴンザレス
     4  酒井 英禎
     4  Daic_h
     4  Motoki Ito
     4  Paul McMahon
     4  u
     3  kano4
     3  toshiro
     2  hirocaster
     2  elm200
     2  Teppei Machida
     2  rono23
     2  sanemat
     2  Shota Fukumori
     2  Noriaki UCHIYAMA
     2  Daishi Kato
     1  sudokohey
     1  HIROKI
     1  Naoto Takai
     1  add20
     1  horaotoko
     1  unknown

これを元にサルベージ。

大江戸Ruby会議03で飯食ってる時に、

@hrysd「Lokka、Organizationにしたらどうですか?」

@komagata「Organizationアカウント?良いねえ、オシャレだねえ」

ということでLokkaのOrganizationアカウント作ってそっちへ移行しました。

lokka (lokka)

今までCollaboratorだった方を後で追加しておきます。

先々週ぐらいから復活してLokkathonやってますが今はもっぱらDatamapperからActiveRecordへの移行をactive-recordブランチでやってます。

ruby2.0.0-p0にしたらテストが通らなくなって、Datamapper関係で引っかかってるんですが、Datamapperはdatamapper2がもう出ちゃってるし、これメンテするのダルいぁと思ってたところに@hrsydがActiveRecordで大体動くbranchを作ってたのでそれに乗っかりました。あとtestを76個ぐらい通せば移行できそうです。


@tomykairaさんの素晴らしいエントリーに触発されて、Lokkaの現在の課題と何をしようとしてるのかを書いてみます。

[lokka][ruby][test]lokka コミッタからのお願いをお読みください - tomykaira makes love with codes

テスト問題も重要で@tomykairaさんや皆さんの協力でテスト拡充に向けて動き始めました。それとは別に僕の取り組んでる事について。

優先してやりたいこと

  • プラグインの仕様を決めること。
  • gem化。
  • 普通の人でも使えるようにすること。

Lokkaに足りない機能は色々ありますが、まずは機能を追加して行ける土台を作ることが大事だと思っています。gem化もその土台に必要なものです。

現在の問題

  1. gem化可能なプラグインの仕様がちとむずい(gem化するとviewの場所がわからなくなる)
  2. 以前のプラグインとの互換性をどうするか
  3. プラグインの自動読み込みがむずい
  4. bundle installオプションとかむずい。管理画面にプログラマー向けっぽい項目が最初から出てる。

1. Lokkaのプラグインは管理画面を持つ事が多いのでRailsで言えばEngine的な性質を持つものが多いことになる。ここはSinatraアプリがRackアプリでもあるという性質を使って、Sinatraアプリ(恐らくそれを継承したLokka::Plugin)をプラグインということにしてuseする。

2. 従来のものも普通にregisterする。

bundlerではlokka-hello.gemをBundler.requireしてもlokka/hello.rbはrequireしてくれない。lokka-hello.rbをrequireする。

3. railsでもそういう名前のgemではlokka-hello.rbを用意してその中でrequireしてるので、

# lokka-hello.rb:
require 'lokka/hello'
register Lokka::Hello

みたいに書いてくださいという決まりにする。

4. どうしよう。Lokka本体をgem化する時に簡単になるように考える?

まとめ

要は

  • Before Rails3 style gem -> Sinatra extension style gem
  • Rails3 style gem -> Sinatra App Style gem

って感じでrailsのパクリで行こうと思います。

Lokkaはまだgemになってません。(gem branch開発者絶賛募集中!)

なので最新版にアップデートするにはlokkaのリポジトリからpullしてこなきゃいけない。(一応新しいバージョンリリース時にtag打ってるのでmasterよりはtagからの方が安全かも?)

よくある構成

  • githubに自分のブログ用リポジトリを持ってる。
  • herokuにそのブログをアップしてる。

僕のこのブログもdocs-komagata-orgというリポジトリ名でgithub, herokuにアップしてます。そういう場合はlokkaというremoteリポジトリ名で本家を追加しておくと楽です。

~/code/docs-komagata-org[master]% cat .git/config 
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
[remote "origin"]
	url = git@github.com:komagata/docs-komagata-org.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[remote "lokka"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@github.com:komagata/lokka.git
[remote "heroku"]
	url = git@heroku.com:docs-komagata-org.git
	fetch = +refs/heads/*:refs/remotes/heroku/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

こんな感じ。最新版に追従したいなという時にgit pull lokka masterすると追いつけるし、自分のテーマいじってただけのハズがいつの間にか本体いじってた時は本体にpushできる。herokuにアップしたい場合はgit push heroku master

最新版にしたらいきなり動かないという場合は、DBスキーマに変更があった場合が多いので、下記をすると動くかもしれません。

$ bundle exec rake db:migrate

Lokkaをrails consoleの様に使う。

Terminal — ruby — 80×24

TokyuRuby会議04でLokkaについてLTさせていただきました。

TokyuRuby会議に初めて参加させていただきました。運営に携わった皆様ありがとうございました。スポンサーのサントリー様のプレミアムモルツ美味しゅうございました。@2celebさんの料理もとても美味しかったです。

Lokkaでもpadrino-helpersをマージしようとしてますが、Padrinoエヴァンジェリストの@udzuraさんと話せたのも嬉しかったです。

改めて勉強会やイベントの目的とは何なのか考えさせられたイベントでした。

Travis CI - Distributed build platform for the Ruby community

ヒャッハー!ruby1.9.3preview1で動かねえところもたまらねえぜ。

Lokkathon #5 : ATND

LokkathonはLokka + Hack + Marathonです。 Lokkaに関する作業をモクモクとするイベントです。会場は用意されますが、Lingrのチャットのみでの参加も可能です。(むしろ推奨)

毎週やってるLokkathon #5、明日もやります。リモート参加も歓迎です。(リモート参加の場合はATND登録しなくて大丈夫です。)腹減るので食べてくるのがオススメです。

成果は毎回下記のようにlokka.orgのエントリーになるのでリモートでも何かやった方はURLとかスクリーンショットをLingrにいただければ載せていきたいと思います。(活動してるプロジェクト感を維持するために・・・)

Lokkathon #3 - Lokka