第4回 g* ワークショップ「はじめてみよう!Grailsプラグイン」初級編
第4回 g* ワークショップ おつかれさまでした。
今回はGrails徹底入門での9章の内容範囲で話をさせていただきました。土壇場で内容変更をしたのと、あいかわらず時間を考えないで内容をつくったので、駆け足のライブコーディングになってしまい申し訳ないです。
今回のハンズオン用のサンプルアプリを移動中に新幹線で作ってるときに、ついうっかりミス操作をしてしまい、同じ名称で新規プラグイン作成コマンドを実行。
解りやすくまとめると。
grails create-app sample001
そしてサンプルのGrailsアプリを結構がんばって作る。
車掌に声をかけられて空白の時間......続きを開始.....
grails create-plugin sample001
え!?上書きされた!最初はかなりあせった...
まあ、こんなミスもあるさと、ちょうど良かったので内容がどうなってるか検証してみると、しっかりプラグインの新規作成時に複製されるファイルは全て上書きされてました。運良く上書きされたファイルは全く編集していなかったので無問題!
今まで何度もGrailsアプリはGrailsプラグインにできます!と言い続けてきたのですが、実際にはGrailsの旧バージョンのバグとかで、view関連が見えなかったりコントローラがまれに正常に動かなかったりと苦労してきたので、最近は全然試していませんでしたが、良い機会なので試してみようと、プラグインになってしまったサンプルアプリをプラグインとしてパッケージ!そして、別のGrailsアプリを新規に作ってインストール、そして起動してみました。
grails create-app test001 cd test001 grails install-plugin ../sample001/grails-sample001-0.1.zip grails run-app
起動は正常!しかしブラウザでみるとエラー!ぅぅぅ...。プラグインに入っている内容はプラグイン用に調整していないので当然です。なのでプラグイン用にパスの定義等の変更を少々!(スライドを参考に!)そして再度起動!正常に動作しました!というわけで、今回のライブコーディングのネタを若干変更しました。
実際にプラグインライブコーディングでやった内容は、
- 準備していたGrailsアプリを起動どうさ確認。
- 準備していたGrailsアプリのディレクトリにめがけて grails create-plugin sample001
- プラグイン化された既存Grailsアプリをプラグインとしてパッケージ grails package-plugin
- 新規にGrailsアプリ作成 grails create-app t00001
- 作成したGrailsアプリにプラグインをインストール grails install-plugin ../sample001/grails-sample001-0.1.zip
- 動作確認 → エラー対象箇所の調整
- さらにプラグインから一部の機能を切り離しプラグイン化
- そして作成したGrailsアプリにプラグインをインストール
- 動作確認
- ローカルのレポジトリに2個のプラグインをリリース!
- そしてapplication.propertiesに必要なプラグインの情報を元に自動プラグイン解決のデモ
スライドとライブコーディングに使ったもろもろはコッソリ置いておきます。
これらで遊ぶにはプラグイン用svnリポジトリが必要です。
用意する物
※各プラグインをリリースするには、
~/.grails/settings.groovy 又はBuildConfig.groovyにプラグイン用SVNリポジトリの設定が必要です。
例えばSVNリポジトリが http://127.0.0.1/gp の場合
grails.plugin.repos.discovery.local="http://127.0.0.1/gp" grails.plugin.repos.distribution.local="http://127.0.0.1/gp"
プラグインのリストを見る
grails list-plugins -repository=local
リリースコマンド
grails release-plugin -repository=local
- プラグインになる前 http://grails.jp/sample/sample001-before.zip
- プラグインにした後 http://grails.jp/sample/sample001-plugin.zip
- 一部切り離してプラグインに。 http://grails.jp/sample/mini-wiki.zip
- プラグインをapplication.properties定義した別アプリ http://grails.jp/sample/t00001.zip
- スライド http://www.slideshare.net/tyama/4-g-grails
まとめると、GrailsでのWebアプリを完全にプラグイン分けで開発したら、メインのプロジェクトに必要なのは、application.properties、プラグインのレポジトリを指定するためのgrails-app/conf/BuildConfig.groovy、そしてgrails-app/confの中にある、DataSource.groovy、Config.groovy等が管理できてれば良い!?ってことですね:-)
前回の合同の時のソースも置いておきます。 http://grails.jp/sample/beanbuilder-test.zip