Grailsには、create-scriptコマンドを使ってscriptsディレクトリ配下にGantスクリプトを作り、任意のGrailsコマンドを追加する機能があります。 scriptsディレクトリ配下のGantスクリプトはGrailsコマンドとして実行可能になるため、 scripts/MyScript.groovy を作ったら、 grails my-script コマンドとして実行できますね。 では、run-scriptコマンドはご存知でしょうか? このコマンドは、任意のGroovyスクリプトを、Grailsのコンテキストを与えた上で実行可能にするコマンドです。Grails 1.3.6の頃からあるようです。 http://jira.grails.org/browse/GRAILS-6015 http://d.hatena.ne.jp/mottsnite/20101215/12924293
Grails 2.3のRest機能のドキュメントを読んでいたら、拡張の一つとして「8.1.7 Hypermedia as the Engine of Application State」というのが書いてあって、調べると面白かったので、この資料(REST: From GET to HATEOAS)を読んだだけでの、私の理解する限りのメモを記しておきます。 一言でいうと、HATEOASとは、Restfulパターンを拡張するアーキテクチャパターンで、Restful原則に対する追加的な制約。どういうものかというと、HTMLアプリの画面遷移を抽象化した、状態遷移を表現するRestful API(=Restful WebアプリのWebインターフェース)を設計するための具体的な方法論になってる。 もちろんGrailsに特化したものではなく、Restと同じレベルのWebアプリケーション一般概念でありRes
Grails 2.3.0.M2 リリースです!! Grails 2.3.0.M2での内容 ※以下の修正もあるのでM1での内容のおさらい。 依存管理の向上 - 依存管理エンジンをAetherに変更。 データバインダー - フレキシブルで保守性の高く簡単な新データバインダー フォーク実行 - 全てのメジャーなコマンドが別々のJVMへフォーク 非同期サポート - リクエストの非同期処理とGORMとシームレスに統合した新たな非同期プログラミングAPI エンコーディング/エスケーピングの向上 - クロスサイトスクリプティング(XSS)防御を実装 Hibernate3と4をサポート - コアから切り離されて、3と4それぞれプラグインにて提供 デフォルトでのgrailswラッパー生成 そして今回M2の目玉は。 サーバサイドRESTサポート大幅改良 ドキュメント テストランナーデーモン - @nobean
Grailsではロギング実装としてLog4jが採用されていますが、 Log4jはもう古いし後継のLogbackを使いたくなったりしますよね? Logback Pluginを使うことでロギング実装をLog4jからLogbackに変更できます。 プラグインのページの説明通り設定すれば簡単にできるだろうと思っていたのですが、 ハマりポイントがあったのでそれも含めて書いていきます。 プラグインのインストール Logback Pluginはバイナリープラグインと呼ばれる種類のもので、 BuildConfig.groovyのpluginsブロックではなくdependenciesブロックに依存関係を書きます。 また、既存のLog4jを無効にするためにinherits('global')ブロックにも設定を追加します。 プラグインの説明のページに書いてあるのはここまでで、 これに加えてreposit
ドメインで文字列のキーをIDにする http://d.hatena.ne.jp/kkz_tech/20130606/1370609690 上の続きで、レガシーDBを使ってGrailsのドメインクラスを作る場合のお話です。 ※前提条件としては、テーブル定義は変更できないもの、としています。 いくらレガシーといえど、テーブルの親子関係くらいはありますよね。 前回の例だとユーザーを作りましたから、今度はさらにユーザーを親とする子テーブル、ユーザーのログイン履歴に相当するものを作ってみました。 何個か引っかかるポイントはあったのですが、まずは親のインスタンスをどう持たせるか、です。適当に指定したら親テーブルとの外部キーであるユーザーIDが2個出来てしまう(;´∀`) ログイン履歴はタイムスタンプ型のログイン日付とユーザーIDの複合主キーなわけですが、これはstatic mappingに以下のような
最新のGroovy 2.5.0から、groovy.transform.AutoFinalというAST変換が追加されていたらしい。 Immutable (groovy 2.4.2 API) ついさっきPaul King氏のツイートを目にして初めて知った。 I agree with you. In Groovy, we added @AutoFinal to add them implicitly for those that want them but don't want to see them.— Paul King (@paulk_asert) 2018年9月13日 気になったので早速試してみた。 まずは@AutoFinalなし。 class Person { String firstName String lastName Person(String firstName, Strin
前回の記事へいただいたコメントの方法で書きなおしてみました。 サンプルソースはGithubに公開しています。 // ------------------------------------------------------------------------------- class CustomerService { def dataSource def update() { def sqlManager = createInstance(dataSource) def count = sqlManager.getCount("com/area_b/samples/select.sql") sqlManager.executeUpdate("com/area_b/samples/insert.sql") def count2 = sqlManager.getCount("com/are
Mirageという2-way SQLが利用できる素敵なO/RマッパをGrailsで使ってみたというブログがあったので、サンプルコードを落として試してみました。 developmentモードでMySQL使うようになってたので、H2に変更してrun-appして試してみました。 確かにMirageでDB操作できている! のですが、更新ボタン2回目を押すとuniqueエラーになるのでおかしいなと思ってみてみたら、insert.sqlファイル内に書いてあるINSERT文でIDがハードコードされてるのでそりゃ2回目は失敗しますね。idを省略して自動払い出しを期待して実行してみると、実行毎にレコードが追加できます。素晴らしい。 という感じで、コードを色々見ていたところ、気になる点が色々あったので、forkして自分好みに修正してみました。 コネクション・データソース・トランザクションまわりのための準備が煩
ドメインで文字列のキーをIDにするには、static mappingのidにgeneratorとプロパティ名、カラム名やデータ型の指定が必要。 Grailsで既存のシステムをいじれるようにするツールっぽいものの原型を作っていたのですが、なにせORマッパーなにそれ食えるのって世界で作られたシステムなので、テーブルにid列に相当するものがない。(既存システムはMyBatisで作成されていて、SQLはXMLに直接記載されてる状態) id列やversion列は消して、idとしてはUSER_IDという文字列を使うようにいろいろ試行錯誤した結果、こんな感じにたどり着きました。 class LoginUser { String userId String name String toString() { userId } static constraints = { userId unique:true
パスワードをハッシュで保存して置くのは当たり前ですが、レインボーテーブル使用した総当たり探索の対策として、ソルトとストレッチングを組み合わせ、より安全にパスワードを保存するのが一般的になってきました。 GrailsのSpring Security Core PluginはデフォルトではSHA-256のハッシュでパスワードを保存しますが、ソルトやストレッチングは使用されていません。しかし、そこは認証のデパートSpring Security、ソルトとストレッチングのサポートが組み込まれています。 まずはソルトのサポートから見て行きましょう。 usernameをソルトとする usernameをソルトとして扱うにはConfig.groovyに以下の設定を追加します。 grails.plugins.springsecurity.dao.reflectionSaltSourceProperty = '
Feed TrawlerというWebアプリを作成した。 「Feed Trawler」 http://feedtrawler.devgoodies.net/ ブログのリンク集的なページのURLから、一段階分リンクをたどり、RSSやAtomのフィードがあった場合、「ページのタイトル」「リンクURL」「フィードURL」を抜き出し、リストする。 こんなものを使うのは、ろくでなしに決っているので、広告の配置もろくでもない感じにした。一度やってみたかった。 環境は、Groovy/Grails + Heroku。それに、GParsとjsoup。 すぐにHerokuの制限である、メモリ512MB、30秒の制限に引っかかってしまうのが残念なところ。 GParsで30スレッド並行で処理しようとすると、メモリが溢れ、強制停止されてしまった。いまはとりあえず5スレッドに設定している。 やると決めて制作に一日。作業
ここ20日間ほど、Groovy/Grailsでフィードアグリゲータを作っていた。 これにどれほどの需要があるかはさておき、自分の見たい情報が整理されて出てくるところまでは来た。 「ハンドボールナビ」 http://handballnavi.com JVMで動くアクション型のフレームワークを調査するところから始めて、練習課題的にフィードアグリゲータを設定し、10日後に公開、その後10日で肉付けして、現在に至る、というのはそう悪いペースではないだろう。 以下、チラシの裏。 Webフレームワーク もともとやりたいことは別にあって、それにはSeasideフレームワークが向いていないことは分かっていた。Smalltalk環境を活かした生産性は抜群で、実行速度も十分(Javaの1/5程度の速度)だと思うが、コンポーネントベースのフレームワークは内向きのプロダクトに向いていて、外向きにはイマイチだ。現状
たまには参加報告書きましょう。 connpass - 2013/05/19 Yokohama.groovy #15 #yokohamagroovy #mattarigrails Togetter - 2013/05/19 Yokohama.groovy #15 #yokohamagroovy #mattarigrails 先月の Yokohama.groovy #14 から、 #mattarigrails と称してGrailsをもくもくする集団として #yokohamagroovy との合同開催で横浜タネマキさんにお邪魔しております。 参加メンバーにもよりますが、必ずしもGrailsやG*に縛られての作業でも無かったようです。AndroidアプリのOAuth連携をつくってみたり、デザイン系の作業をしたりしてる人もいました。 GroovyやGrailsなど、G*エコシステムに興味がある方、ゆ
この記事の内容は、Burt氏による"This Week in Grails"を、意訳した内容です。誤訳等有りましたら@tyama宛てに(DMで)優しく報告ください。 元記事:This Week in Grails (2013-20)。 今週のビッグニュースは、やはりGrails 2.3 M1 のリリースですね。2.3では多くの修正や向上と新機能が含まれるなど大きなアップデートとなります。M1では更新される内容の一部が含まれてます。 その内容に関してGraemeがブログで紹介しています。Grails 2.3 M1 and Upcoming M2とRoad to Grails 2.3: RESTful URL Mappings and URL Mapping Reportsを参照してください。 Orange & Bronzeの人達が作成した、クールなGrails動画をチェックしましょう。 B
pull requestがmergeされてプラグインが更新されて不便なところが解消された記念に紹介します。 spring-security-twitter プラグインを導入する Role をつくる GSP に連携ボタンを設置する たったこれだけです。 spring-security-twitter プラグインを導入する http://grails.org/plugin/spring-security-twitter に書いてある通り、 BuildConfig.groovy の repositories ブロックに mavenRepo "http://maven.springframework.org/release/" を、 plugins ブロックに compile ":spring-security-twitter:0.5.2" を、それぞれ追記します。そのあと refresh-dep
WindowsのコマンドプロンプトでGrailsのインタラクティブモードまともに動かないよねー、とお嘆きのみなさま。果たして何人いるのかわからないみなさま。 Grails wrapper は御存知ですか? > grails wrapper としてやると、自分のGrailsプロジェクトに grailsw コマンドを追加して、あたかもそこにGrailsコマンドがあるかのように動作してくれる、蝶・便利なコマンドです。環境変数いじらなくても動いてくれるので楽ちんですね。シェル(grailsw)とバッチ(grailsw.bat)が用意されてるので、Windowsでの動作もバッチリです。Grails wrapperは次期バージョンからはデフォルトで入ってくれるという嬉しい話もありますね。 このGrails wrapperをWindows PowerShellで使うと…!! > ./grailsw |
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く