SDKMANでさくっとインストール
SDKMAN
簡単なSDKMANの使い方はコチラにも有ります。
[Groovy]gvmが生まれ変わった。SDKMANでGrvoovyやGrailsをインストール
また、Grailsのチュートリアルも公開中ですのでそちらも合わせてご覧くだし。
Grailsチュートリアル
Grailsアプリケーションの作成
適当なディレクトリで、今までと同じくcreate-app
コマンドを実行します。
kkuwana% grails create-app hellograils3
| Application created at /home/k-kuwana/IdeaProjects/hellograils3
kkuwana%
コレでアプリケーションが作成されました。
とりあえずアプリケーションのトップディレクトリに移動して中身を覗いてみます。
kkuwana% pwd
/home/k-kuwana/IdeaProjects/hellograils3
kkuwana% ls -alh
合計 40K
drwxr-xr-x 5 k-kuwana k-kuwana 4.0K 3月 31 16:45 .
drwxr-xr-x 28 k-kuwana k-kuwana 4.0K 3月 31 16:45 ..
-rw-r--r-- 1 k-kuwana k-kuwana 2.0K 3月 31 16:45 build.gradle
drwxr-xr-x 3 k-kuwana k-kuwana 4.0K 3月 31 16:45 gradle
-rw-r--r-- 1 k-kuwana k-kuwana 45 3月 31 16:45 gradle.properties
-rwxr--r-- 1 k-kuwana k-kuwana 5.0K 3月 31 16:45 gradlew
-rw-r--r-- 1 k-kuwana k-kuwana 2.4K 3月 31 16:45 gradlew.bat
drwxr-xr-x 12 k-kuwana k-kuwana 4.0K 3月 31 16:45 grails-app
drwxr-xr-x 5 k-kuwana k-kuwana 4.0K 3月 31 16:45 src
kkuwana%
噂通りGradleが!
コントローラの作成
では早速コントローラを作っていきます。
先ほど作成したディレクトリに移動して、grails
コマンドを実行します。
初回は山ほどライブラリをダウンロードしてくるので気長に待ちます。
コントローラの作成方法も以前のバージョン同様のcreate-controller
で行います。
grails> create-controller helloworld
| Created grails-app/controllers/hellograils3/HelloworldController.groovy
| Created src/test/groovy/hellograils3/HelloworldControllerSpec.groovy
grails>
では早速HelloWorldController.groovy
を編集します。
とりあえずはvimで。
vi IdeaProjects/hellograils3/grails-app/controllers/hellograils3/HelloworldController.groovy
package hellograils3
class HelloworldController {
def index() {
render "こんにちわ世界"
}
}
上記のようなコードを書いたら、早速Grailsの起動です。
Grailsのインタラクティブモードの状態で、run-app
を実行します。
grails> run-app
:compileJava UP-TO-DATE
:compileGroovy
:processResources
:classes
:findMainClass
:bootRun
Grails application running at http://localhost:8080
> Building 83% > :bootRun
メッセージからGradleに匂いがしますね!
この状態でhttp://localhost:8080にアクセスすれば、Grailsが起動していることが確認できます。
それでは早速HelloWorldにアクセスしましょう!
URLはhttp://localhost:8080/helloworldです。
問題ありませんね!
viewの作成
ではview(gsp)も作成してみます。
コントローラを作成すると、そのコントローラ用のviewのディレクトリが作成されます。
今回の場合、/home/k-kuwana/IdeaProjects/hellograils3/grails-app/views/helloworld
というディレクトリが作成されいます。
このディレクトリ配下にindex.gsp
を作成します。
<html>
<head>
<title>This is GSP!</title>
</head>
<body>
<h1>Hello World on GSP!</h1>
<g:each in="${(1..5)}" var="i">
<p>GSP! ${i}</p>
</g:each>
</body>
</html>
コントローラは表示処理をviewに任せるので、renderをコメントアウトするか削除しましょう。
package hellograils3
class HelloworldController {
def index() {
//render "こんにちわ世界"
}
}
それでは再度HelloWorldにアクセスしてみましょう。
大丈夫ですね。
IDE(IntelliJ)を使う
Grails3.0からGradleベースになっているのでインポートもお手軽になっているそうです。
ということでIntelliJにインポートしてみます。
単純にメニューからImport Project
を選択して、作成したGrailsアプリケーションのbuild.gradle
を選択するだけです。
コレだけでOK!
現状の問題点
多分自分の環境が原因だと思うけど、run-appを実行すると、gradleがコンソールへの出力を中途半端なところで止めてしまってコマンドが入力できない。
grails> run-app
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass
:bootRun
Grails application running at http://localhost:8080
> Building 83% > :bootRun
上記の用に> Building 83% > :bootRun
で出力が止まってしまって、grailsの他のコマンドが実行できない。
Grailsアプリケーションを停止するにはctrl-cを使うしか無い。
追記
コメントで教えていただきました。現状はこれが仕様のようです。
別途コンソールを立ち上げてそこでGrailsのインタラクティブモードに入ってしまえばそちらでcreate-controller
などのコマンドが実行できます。
その他気づいた点
BootStrap
IntelliJを使う場合、GrailsViewだとBootstrapが見えません。
Projectビューにすると、grails-app/init
の下にBootStrapがあります。
本番環境で再起動なしにGSPの編集を反映させる?
なんだかできるっぽい。
7.2.7 Making Changes to a Deployed Application
要調査。
その他起動方法
IntelliJを使っている場合、IntelliJから簡単にGrailsを起動させることができます。
grails-app/init/コントローラ名/Application.groovy
を右クリックして、Run 'Application.main()'
を実行するだけです。
ただし、標準だとGrailsのauto-reload機能が無効になってしまっています。
これを有効にするために、
メニューのrun ---> Edit Configurations...から、ApplicationのVM Optionに、"-Xverify:none"
を指定してあげます。
これでIntelliJからRun 'Application.main()'
を実行してGrailsアプリケーションをauto-reloadが有効な状態で起動することができるようになりました。
ただし、run-app
コマンドでGrailsを起動した場合とは少し異なる状態のようです。
App versionとGrails versionが、IntelliJから起動した場合には省略されていて、特に気なるのがApp profileという値が異なっている点です。
具体的に何が違うのかは今後要調査。
参考
http://d.hatena.ne.jp/mottsnite/20150331/1427797579
https://www.youtube.com/watch?v=aro3_RZqgtU