Tuesday, September 30, 2008

そろそろ grails-1.1-SNAPSHOTをさわってみる。 Pt.1 Plugins編

ながーいあいだこっちに書いてませんでしたが。
今度こそブログを再開しようかなと思います。
#最近こっそり、はてなでもブログ始めましたが・・。

ブログ復活第1弾
「そろそろ grails-1.1-SNAPSHOTをさわってみる。 Pt.1」
#はたしてPt.2は書くのだろうか???

先ずは個人的に大幅変更があると大問題になるプラグイン動作関連からわかる範囲で探ってみます。
#まだ、SNAPSHOTなので、何が起きるかわかりませんが・・・
#一部、1.0.3で追加されていて気付いていなかった内容も含みます。


はじめに、プラグインインストール!


grails install-plugin /path_to_plugins/grails-acegi-0.3.zip

新機能 globalオプション
このオプションを付けるとインストールされたプラグインが共通管理され、
同一プラグインの場合は同じソースから利用することになる。
grails install-plugin -global /path_to_plugins/grails-acegi-0.3.zip


そして、プラグイン展開先の変更。
これは意外と人によっては重大な仕様変更・・・
Grailsプロジェクト内にプラグインが展開されなくなります。
プラグイン展開先は$USER_HOME/.grails以下にある各Grailsアプリケーションのリソース階層に変更

$USER_HOME/.grails/1.1-SNAPSHOT/projects/_アプリ名_/plugins/


”-global”オプションでのインストールの場合は、”global-plugins”階層以下に展開されます。

$USER_HOME/.grails/1.1-SNAPSHOT/global-plugins/

この実装により、”-global”オプションでインストールしたプラグインは、
全Grailsプロジェクトから同じソースが共通利用ができるようになります。
#TODO 要確認-> .zipだけ各プロジェクトのリソース階層にコピーされるが・・・なぜ必要?・・違いはversionのみで判断?
追記:
プラグインをインストールしたGrailsプロジェクトに grails-/プラグイン/.zipが保持されます。
”-global”オプションでインストールしたプラグインは、他のGrailsプロジェクトでインストールしなくても、
プラグインが利用できるようになります。
なので必ず使うプラグインは”-global”オプションでインストールすると便利


この実装によって、各Grailsプロジェクトにインストールしたプラグインの改変が容易にできなくなったわけですが、このままでは、プラグインの微妙な改変をするための差分プラグイン又は、改変した場合は、versionを変更したプラグインで管理しないとダメですね。
まあ、プラグインの改変自体、やりすぎると色々問題なので、この方がしっかり管理できて良いですね。


プラグインUninstall!


インストーラで入れたんだから消すときはアンインストール!
プラグインのuninstallが実装されます。
grails uninstall-plugins (-global) myplugin

このコマンドによって、インストールされたプラグインが削除されます。
ここでプラグイン開発者向けの追加実装として、アンインストール時に呼び出される。
スクリプト”_Uninstall.groovy”が実装されました。
_Uninstall.groovyは、”grails uninstall-plugins”が呼び出された際に実行されます。
なので、プラグイン開発者の方は、アンインストール時に、依存ファイル削除などの、必要な処理をおこなうことができます。


”_Uninstall.groovy”のスクリプト検証ついでに・・・。

スクリプト関係変更点!


Grails提供のスクリプトの読込は”grailsScript("スクリプト名")”で読み込めるようになります。
includeTargets << grailsScript("Init")

この方法でスクリプトにInit.groovyを呼び出します。
Init.groovyといえば、1.0.3から実装されていた
便利なターゲットを紹介しておきます。
”parseArguments” - コマンドの引数を”argsMap”にまとめてくれる便利な奴!
(ex: --foo=bar or -z=qux) -> argsMap["foo"] or argsMap["z"]
(ex: -force or --help) -> argsMap["params"]


他には・・・・。
まだザックリ検証中なので、わかる範囲の追加された共通プロパティのメモを以下に
#説明はまた今度・・。
Init.groovy
pluginsDirPath = System.getProperty(GrailsApplication.PLUGINS_DIR)
globalPluginsDirPath = System.getProperty(GrailsApplication.GLOBAL_PLUGINS_DIR)
pluginsHome = "${userHome}/.grails/${grailsVersion}/plugins/"

metadata = new Properties()
metadataFile = new File("${basedir}/application.properties")
scaffoldDir = "${basedir}/web-app/WEB-INF/templates/scaffolding"
configFile = new File("${basedir}/grails-app/conf/Config.groovy")
webXmlFile = new File("${resourcesDirPath}/web.xml")
log4jFile = new File("${resourcesDirPath}/log4j.properties")




結論、プラグインの変更点で重要なのは、(今のところ/*まだまだ変更あるかも*/)展開方法が変わったところくらいですかね?
インストール時にバラバラになりがちな(ん?ならない?)プラグイン利用をしっかり管理できるので、良い変更点だと思いました。

Labels:

0 Comments:

Post a Comment

<< Home