.rvmrc ファイルを置いておくと自動的に使用するRubyのバージョンを切り替えられるので便利ですが、デプロイ先で利用する場合に毎回 .rvmrc を信頼するか Yes/No? と聞かれるのが自動化と相性が良くないので、

   1  % cd /path/to/.rvmrc
   2  % rvm rvmrc trust

しておくとその後何も聞かれなくなります。

posted by Png genki on Tue 13 Dec 2011 at 09:15
12th Mon

アジャンタ

千代田区二番町3番地11にあるインド料理店アジャンタに行きました。

HPでは通院販売もされています。 お店の中でもスパイスやマンゴーのピクルスなど珍しいものが販売されていました。 お店の外ではカレーのお弁当も売られています。

ランチでお店を利用しました。二階に案内されます。

ランチのセットとしては、

・ワン カレー
お 好 み の カ レ ー+ご飯又はお好みのパン ¥1300

・A ペア
チキンカレー+キーママタール+ご飯又はお好みのパン ¥1500

・C ペア
お 好 み の カ レ ー【2種】+ご飯又はお好みのパン ¥1500

・Aセット
お 好 み の ス ー プ+チキンカレー+キーママタール+ご飯又はお好みのパン+お好みのお飲み物 ¥2000

・Cセット
お 好 み の ス ー プ+お好みのカレー【2 種】+ご飯又はお好みのパン+お好みのお飲み物 ¥2000

があります。 ワンカレーのエッグカレーを注文しました。 エッグカレーは辛くないですが、辛いカレーを注文すると「辛いですが大丈夫ですか?」と店員さんが聞いてくれます。店員さんは見た範囲では日本人はいないようでした。

DSC_0002.JPG

はじめにサラダが出てきます。 キャベツにマヨネーズ系のドレッシングを和えたものです。生のキャベツの千切りえはなく、酢漬けっぽい感じがしましたが、正確にはわかりません。 ナンは大きいです。厚めでもっちりしている部分も、薄くてパリパリの部分もありました。オイル?がかかっています。 エッグカレーは辛くないカレーです。辛いカレーが好きな方にはお勧めできませんが、味は良かったです。中央に置かれたゆで玉子はしっかり火が通っていました。 チャイなども飲みたかったですが、単品で550円と割と高めだったのでやめておきました。

DSC_0003.JPG

テーブルや椅子は赤と緑のそれぞれのチェックなどでクリスマスカラーっぽかったですが、特にクリスマスあからというわけではなさそうです。 お水の追加は頻繁にしてもらえました。店員さんの愛想も良いので居心地が良かったです。

DSC_0007.JPG

posted by Png mari2 on Mon 12 Dec 2011 at 22:12

新しい地域Rubyコミュニティ Chiyoda.rb を発足いたしました。

千代田区周辺のRubyに縁のある企業に会場をお借りして定期的に会合を開催し、Rubyプログラマーの間で情報交換を行う場所を提供する事を目的としております。

株式会社万葉様のご協力により、第1回の会合を開催する運びとなりました。

Rubyistの皆様方におかれましてはお誘い合わせの上ご参加いただければ幸いです。 よろしくお願いいたします。

posted by Png genki on Mon 12 Dec 2011 at 19:52

 Cloud Foundryに申し込んで使えるようになったので、Spring Roo in Actionの11章を参考にRooのアプリケーションをデプロイしてみました。

 まずはroo shellからCloud Foundryを走査するためのAddonをインストールします。インストールの間自動的に認証されるよう、下記コマンドを実行します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting enabled (this is potentially unsafe); disable by typing 'pgp automatic trust' again

そして下記コマンドでAddonをインストールします。

   1  roo> addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry;1.1.5.RELEASE
   2  Target resource(s):
   3  -------------------
   4     Spring Roo - Addon - Cloud Foundry (1.1.5.RELEASE)
   5  
   6  Required resource(s):
   7  ---------------------
   8     Spring Beans (3.0.5.RELEASE)
   9     jcl-over-slf4j (1.6.1)
  10     slf4j-nop (1.6.1)
  11     Spring AOP (3.0.5.RELEASE)
  12     Servlet Specification API (2.5.0)
  13     Spring Core (3.0.5.RELEASE)
  14     Jackson JSON processor (1.6.2)
  15     Data mapper for Jackson JSON processor (1.6.2)
  16     Spring Context (3.0.5.RELEASE)
  17     Spring Roo - Wrapping - aopalliance (1.0.0.0010)
  18     Spring Web (3.0.5.RELEASE)
  19     slf4j-api (1.6.1)
  20     Spring Roo - Wrapping - Cloud Foundry API (0.0.1.0010)
  21  
  22  Optional resource(s):
  23  ---------------------
  24     Spring Expression Language (3.0.5.RELEASE)
  25     Spring ASM (3.0.5.RELEASE)
  26  
  27  Deploying...done.
  28  
  29  Successfully installed add-on: Spring Roo - Addon - Cloud Foundry [version: 1.1.5.RELEASE]
  30  [Hint] Please consider rating this add-on with the following command:
  31  [Hint] addon feedback bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry --rating ... --comment "..
  32  ."

Roo in Actionの例では "addon install bundle --bundleSymbolicName org.springframework.roo.addon.cloud.foundry" という感じにバージョン番号を指定していないのですが、これだと最新のバージョンがインストールされます。今回のケースではSpring Rooのバージョンが1.1.5なので、Addonのインストールでもバージョンを1.1.5に指定しないとこの時点の最新である1.2.0.RC1がインストールされてしまい、うまくいきません。

インストールが終了したら自動認証をOFFに戻します。

   1  roo> pgp automatic trust
   2  Automatic PGP key trusting disabled (this is the safest option)

Addonをインストールしたことでcloud foundryコマンドが使用できるようになっています。まずはCloud Foundryにログインします。

   1  roo> cloud foundry login --email xxxxxxxxxx@xxxxx.xxx --password xxxxxxxxxx
   2  Credentials saved.
   3  Logged in successfully with email address 'xxxxxxxxxx@xxxxx.xxx'

Cloud Foundryの環境についての情報を表示するには下記コマンドを実行します。

   1  roo> cloud foundry info
   2  
   3  
   4  VMware's Cloud Application Platform
   5  For support visit http://support.cloudfoundry.com
   6  
   7  
   8  Target:     http://api.cloudfoundry.com (0.999)
   9  
  10  
  11  User:     hiroaki.akanuma@gmail.com
  12  Usage:     Memory (128MB of 2048MB total)
  13       Services (0 of 16 total)
  14       Apps (1 of 20 total)

現在デプロイされているアプリケーションのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com

上記の出力では akanumahello というアプリケーションがすでにデプロイされていることが分かります。

また、現在使用可能なサービスのリストは下記コマンドで確認できます。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  There are currently no provisioned services.

ではアプリケーションをデプロイしてみます。cloud foundry deploy コマンドでデプロイすることができます。

   1  roo> cloud foundry deploy --appName cftest --path CREATE
   2  ~~中略~~
   3  Operation could not be completed: 400 Bad Request

上記のように 400 Bad Request となってしまった場合は、--appName で指定したアプリケーション名がすでに使われているということなので、アプリケーション名を変更して再度デプロイします。

   1  roo> cloud foundry deploy --appName cftestaka --path CREATE
   2  ~~中略~~
   3  The application 'cftestaka' was successfully pushed

上記のように successfully pushed と出力されればデプロイ成功です。アプリケーションの一覧を確認してみます。

   1  roo> cloud foundry list apps
   2  
   3  =================================== Applications ===================================
   4  
   5  Name             Status      Instances     Services     URLs
   6  ----             ------      ---------     --------     ----
   7  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
   8  cftestaka        STOPPED     1                          cftestaka.cloudfoundry.com

cftestakaというアプリケーションが一覧に追加されています。StatusがSTOPPEDになっていてまだ起動はしていないので、下記コマンドでアプリケーションを起動します。

   1  roo> cloud foundry start app --appName cftestaka
   2  The application 'cftestaka' was successfully started
   3  roo> cloud foundry list apps
   4  
   5  =================================== Applications ===================================
   6  
   7  Name             Status      Instances     Services     URLs
   8  ----             ------      ---------     --------     ----
   9  akanumahello     STARTED     1                          akanumahello.cloudfoundry.com
  10  cftestaka        STARTED     1                          cftestaka.cloudfoundry.com

Status が STARTED に変わり、アプリケーションが起動されました。http://cftestaka.cloudfoundry.com/ にアクセスしてトップページが表示されれば起動に成功しています。

稼働中のアプリケーションの統計情報については下記コマンドで確認できます。

   1  roo> cloud foundry view app stats --appName cftestaka
   2  
   3  ============================== App. Stats ==============================
   4  
   5  Instance     CPU (Cores)     Memory (limit)     Disk (limit)      Uptime
   6  --------     -----------     --------------     ------------      ------
   7  0            8.0 (4)         239.09M (256M)     28.0M (2048M)     0d:

さて、アプリケーションは起動しましたが、まだDBが使えるようになっていないので、Entityを操作するための画面に遷移しようとするとエラーになってしまいます。

まずはDBをサービスとして作成します。

   1  roo> cloud foundry create service --serviceName cftesakadb --serviceType postgresql
   2  The service 'cftesakadb' was successfully created

サービスの一覧を確認すると、= Provisioned Services = の部分にサービスが追加になっています。

   1  roo> cloud foundry list services
   2  
   3  ======================= System Services ========================
   4  
   5  Service        Version     Description
   6  -------        -------     -----------
   7  mysql          5.1         MySQL database service
   8  postgresql     9.0         PostgreSQL database service (vFabric)
   9  mongodb        1.8         MongoDB NoSQL store
  10  redis          2.2         Redis key-value store service
  11  rabbitmq       2.4         RabbitMQ messaging service
  12  
  13  
  14  
  15  = Provisioned Services =
  16  
  17  Name           Service
  18  ----           -------
  19  cftesakadb     postgresql

次に、作成したサービスをアプリケーションに紐付けます。

   1  roo> cloud foundry bind service --serviceName cftesakadb --appName cftestaka
   2  The service 'cftesakadb' was successfully bound to the application 'cftestaka'
   3  roo>

そしてアプリケーションを再起動します。

   1  roo> cloud foundry restart app --appName cftestaka
   2  The application 'cftestaka' was successfully restarted

これでアプリケーションがDBを使えるようになり、EntityのCRUD画面も動作するようになります。

アプリケーションのログを確認するには下記コマンドを実行します。

   1  roo> cloud foundry view logs --appName cftestaka --instance 0

長いので出力は省略しますが、stderr.logとstdout.logが閲覧できます。

それと現在のメモリの割当量は下記コマンドで確認できます。

   1  roo> cloud foundry view app memory --appName cftestaka
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     256MB

現在は256MBのメモリが割り当てられています。この割当量を変更するには下記のようにコマンドを実行します。

   1  roo> cloud foundry update app memory --appName cftestaka --memSize 512MB
   2  
   3  = Application Memory =
   4  
   5  Name          Memory
   6  ----          ------
   7  cftestaka     512MB

メモリ量が512MBに変更されました。

RooとCloud Foundryの組み合わせなら簡単なCRUDアプリの公開はとてもスピーディーに行うことができそうです。まだCloud Foundryはベータ版なので、正式版になったときに料金体系などがどうなるかは気になりますが、Roo + Cloud Foundryで何か公開できるようなサービスでも作れないかなぁと思っています。

posted by Png akanuma on Mon 12 Dec 2011 at 00:01

 名前は聞いたことがあったもののどんなものかよく分かってなかったので、下記チュートリアルページを参考にCloud Foundryを触ってみました。

VMware Cloud Foundry入門 - Getting Started (Japanese)

 Cloud FoundryはVMwareが提供しているオープンソースのPaaSフレームワークで、ソースコードを取得してPaaS環境を構築できるほか、VMwareがvSphereデータセンター内で運営しているCloud Foundryのホステッド環境に接続することができます。現在はβ版ということで、無料で利用できるようです。

 まずは http://www.cloudfoundry.com/ でメールアドレスを登録してサインアップ。すぐに「Welcome to Cloud Foundry」という件名のメールが届きますが、これは登録を受け付けたというだけで、実際にアカウントが用意されて使用可能になるのはしばらくして「Welcome to Cloud Foundry - Your signup is approved!」という件名のメールでパスワードが届いてからになります。私の場合は2日ほどで届きました。

 とりあえず自宅PCのWindows環境で試してみました。まず http://www.rubyinstaller.org/ から rubyinstaller-1.9.3-p0.exe をダウンロードしてRubyをインストールします。

   1  C:\Users\akanuma>ruby -version
   2  ruby 1.9.3p0 (2011-10-30) [i386-mingw32]
   3  -e:1:in `<main>': undefined local variable or method `rsion' for main:Object (NameError)

なにやらエラーが出ていますが、とりあえず続行。

Cloud FoundryのCLIであるvmcをインストールします。

   1  C:\Users\akanuma>gem install vmc
   2  Fetching: spruz-0.2.13.gem (100%)
   3  Fetching: json_pure-1.5.4.gem (100%)
   4  Fetching: rubyzip2-2.0.1.gem (100%)
   5  Fetching: mime-types-1.17.2.gem (100%)
   6  Fetching: rest-client-1.6.7.gem (100%)
   7  Fetching: terminal-table-1.4.4.gem (100%)
   8  Fetching: interact-0.2.gem (100%)
   9  Fetching: vmc-0.3.13.gem (100%)
  10  Successfully installed spruz-0.2.13
  11  Successfully installed json_pure-1.5.4
  12  Successfully installed rubyzip2-2.0.1
  13  Successfully installed mime-types-1.17.2
  14  Successfully installed rest-client-1.6.7
  15  Successfully installed terminal-table-1.4.4
  16  Successfully installed interact-0.2
  17  Successfully installed vmc-0.3.13
  18  8 gems installed
  19  Installing ri documentation for spruz-0.2.13...
  20  Installing ri documentation for json_pure-1.5.4...
  21  Installing ri documentation for rubyzip2-2.0.1...
  22  Installing ri documentation for mime-types-1.17.2...
  23  Installing ri documentation for rest-client-1.6.7...
  24  unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Windows-31J for README.rdoc, skipping
  25  Installing ri documentation for terminal-table-1.4.4...
  26  Installing ri documentation for interact-0.2...
  27  Installing ri documentation for vmc-0.3.13...
  28  Installing RDoc documentation for spruz-0.2.13...
  29  Installing RDoc documentation for json_pure-1.5.4...
  30  Installing RDoc documentation for rubyzip2-2.0.1...
  31  Installing RDoc documentation for mime-types-1.17.2...
  32  Installing RDoc documentation for rest-client-1.6.7...
  33  unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to Windows-31J for README.rdoc, skipping
  34  Installing RDoc documentation for terminal-table-1.4.4...
  35  Installing RDoc documentation for interact-0.2...
  36  Installing RDoc documentation for vmc-0.3.13...

vmcのtargetコマンドでデプロイ対象を api.cloudfoundry.com に設定します。

   1  C:\Users\akanuma>vmc target api.cloudfoundry.com
   2  Succesfully targeted to [http://api.cloudfoundry.com]

続けてログインコマンドを実行します。

   1  C:\Users\akanuma>vmc login
   2  Email: xxxxxxxxxx@xxxxx.xxx
   3  Password: ********
   4  Successfully logged into [http://api.cloudfoundry.com]

そしてアプリケーションを作成するためのディレクトリを作成して移動します。

   1  C:\Users\akanuma>mkdir hello
   2  C:\Users\akanuma>cd hello
   3  C:\Users\akanuma\hello>

次にhllo.rbという名前で下記内容のファイルを作成します。文字コードはUTF-8で、改行コードはLFにしないと失敗するようです。

   1  require 'sinatra'
   2  get '/' do
   3    "Hello from Cloud Foundry!"
   4  end

アプリケーションをデプロイします。vmc pushコマンドを実行すると追加の情報入力用のプロンプトが表示されますので、それぞれ下記のように入力します。

   1  C:\Users\akanuma\hello>vmc push
   2  Would you like to deploy from the current directory? [Yn]:
   3  Application Name: akanumahello
   4  Application Deployed URL ["akanumahello.cloudfoundry.com"]:
   5  Detected a Sinatra Application, is this correct? [Yn]:
   6  Memory Reservation ("64M", "128M", "256M", "512M", "1G", "2G") ["128M"]:
   7  Creating Application: OK
   8  Would you like to bind any services to 'akanumahello'? [yN]:
   9  Uploading Application:
  10    Checking for available resources: OK
  11    Packing application: OK
  12    Uploading (0K): OK
  13  Push Status: OK
  14  Staging Application: OK
  15  Starting Application: OK

無事デプロイされたようです。ブラウザで http://akanumahello.cloudfoundry.com/ にアクセスして「Hello from Cloud Foundry!」と表示されればひとまず成功です。

続けて変更を加えてみます。hello.rbの "Hello from Cloud Foundry!" を "Hello from Cloud Foundry and VMware!" に変更して保存します。そして下記コマンドでサーバ上に変更を反映します。

   1  C:\Users\akanuma\hello>vmc update akanumahello
   2  Uploading Application:
   3    Checking for available resources: OK
   4    Packing application: OK
   5    Uploading (0K): OK
   6  Push Status: OK
   7  Stopping Application: OK
   8  Staging Application: OK
   9  Starting Application: OK

ブラウザで再度表示を確認して、変更が反映されていれば成功です。

このチュートリアルを試す限りは簡単にアプリケーションを公開できそうです。メモリも2GBまでは使えるようですので、あまり負荷の高くないアプリケーションであれば十分に使えそうです。

posted by Png akanuma on Sun 11 Dec 2011 at 18:57

SCSSよりSASSが好きです。 時々SCSSのことをSASSと呼んでるものがあって紛らわしいですね。

Rails 3.1では config/application.rb

   1      config.sass.preferred_syntax = :sass

と記述すれば SASS をデフォルトで使ってくれるようです。

Let's prefer the SASS :)

posted by Png genki on Sun 11 Dec 2011 at 05:03

IKImageBrowserViewは画像のリストを表示する場合に非常に重宝します。

現時点ではIBから背景色を設定することができないのですが、以下のようにすると背景色を設定できます。

   1  [imageBrowserView
   2    setValue:[NSColor clearColor]
   3    forKey:IKImageBrowserBackgroundColorKey];

posted by Png genki on Fri 9 Dec 2011 at 16:58

brew upgrade groonga しようとしたら、以下のようなエラーが出てきました。

   1  Error: undefined method `include?' for nil:NilClass

これはbrewのバージョンが古いのが原因らしい。

   1  cd `brew --prefix`/Library/Contributions/examples
   2  git clean -n
   3  rm brew-upgrade.rb

して再挑戦したら上手く動きました。

posted by Png genki on Sun 4 Dec 2011 at 02:26

 前回まででEntityの作成まで終わったので、Webアプリケーションとして動作させるためのメモです。

以前のエントリはこちら
Spring Roo Install
[Spring Roo]プロジェクト作成, Logging&DB接続設定
[Spring Roo]Entity作成

・roo shell上でwebコマンドを実行することで、Webアプリケーションとして動作するために必要なファイルが生成されます。

   1  roo> web mvc setup
   2  Created SRC_MAIN_WEBAPP\WEB-INF\spring
   3  Created SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml
   4  Created SRC_MAIN_WEBAPP\WEB-INF\web.xml
   5  Updated SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml
   6  Created SRC_MAIN_WEBAPP\images
   7  Created SRC_MAIN_WEBAPP\images\create.png
   8  Created SRC_MAIN_WEBAPP\images\list.png
   9  Created SRC_MAIN_WEBAPP\images\resultset_previous.png
  10  Created SRC_MAIN_WEBAPP\images\resultset_next.png
  11  Created SRC_MAIN_WEBAPP\images\show.png
  12  Created SRC_MAIN_WEBAPP\images\favicon.ico
  13  Created SRC_MAIN_WEBAPP\images\delete.png
  14  Created SRC_MAIN_WEBAPP\images\resultset_first.png
  15  Created SRC_MAIN_WEBAPP\images\springsource-logo.png
  16  Created SRC_MAIN_WEBAPP\images\resultset_last.png
  17  Created SRC_MAIN_WEBAPP\images\add.png
  18  Created SRC_MAIN_WEBAPP\images\banner-graphic.png
  19  Created SRC_MAIN_WEBAPP\images\update.png
  20  Created SRC_MAIN_WEBAPP\styles
  21  Created SRC_MAIN_WEBAPP\styles\alt.css
  22  Created SRC_MAIN_WEBAPP\styles\standard.css
  23  Created SRC_MAIN_WEBAPP\WEB-INF\classes
  24  Created SRC_MAIN_WEBAPP\WEB-INF\classes\standard.properties
  25  Created SRC_MAIN_WEBAPP\WEB-INF\classes\alt.properties
  26  Created SRC_MAIN_WEBAPP\WEB-INF\layouts
  27  Created SRC_MAIN_WEBAPP\WEB-INF\layouts\default.jspx
  28  Created SRC_MAIN_WEBAPP\WEB-INF\layouts\layouts.xml
  29  Created SRC_MAIN_WEBAPP\WEB-INF\views
  30  Created SRC_MAIN_WEBAPP\WEB-INF\views\header.jspx
  31  Created SRC_MAIN_WEBAPP\WEB-INF\views\footer.jspx
  32  Created SRC_MAIN_WEBAPP\WEB-INF\views\views.xml
  33  Created SRC_MAIN_WEBAPP\WEB-INF\views\index.jspx
  34  Created SRC_MAIN_WEBAPP\WEB-INF\views\index-template.jspx
  35  Created SRC_MAIN_WEBAPP\WEB-INF\views\uncaughtException.jspx
  36  Created SRC_MAIN_WEBAPP\WEB-INF\views\resourceNotFound.jspx
  37  Created SRC_MAIN_WEBAPP\WEB-INF\views\dataAccessFailure.jspx
  38  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form
  39  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\update.tagx
  40  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\create.tagx
  41  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\dependency.tagx
  42  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\show.tagx
  43  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\list.tagx
  44  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\find.tagx
  45  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields
  46  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\select.tagx
  47  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\display.tagx
  48  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\column.tagx
  49  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\editor.tagx
  50  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\checkbox.tagx
  51  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\simple.tagx
  52  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\input.tagx
  53  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\textarea.tagx
  54  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\datetime.tagx
  55  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\table.tagx
  56  Created SRC_MAIN_WEBAPP\WEB-INF\tags\form\fields\reference.tagx
  57  Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu
  58  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util
  59  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\pagination.tagx
  60  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\theme.tagx
  61  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\placeholder.tagx
  62  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\panel.tagx
  63  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\language.tagx
  64  Created SRC_MAIN_WEBAPP\WEB-INF\tags\util\load-scripts.tagx
  65  Created SRC_MAIN_WEBAPP\WEB-INF\i18n
  66  Created SRC_MAIN_WEBAPP\WEB-INF\i18n\messages.properties
  67  Created SRC_MAIN_WEBAPP\images\en.png
  68  Updated SRC_MAIN_WEBAPP\WEB-INF\i18n\application.properties
  69  Updated SRC_MAIN_WEBAPP\WEB-INF\web.xml
  70  Updated ROOT\pom.xml [added dependencies org.springframework:spring-web:${spring.version}, org.springframework:spring-we
  71  bmvc:${spring.version}, org.springframework.webflow:spring-js-resources:2.2.1.RELEASE, commons-digester:commons-digester
  72  :2.0, commons-fileupload:commons-fileupload:1.2.1, javax.servlet.jsp.jstl:jstl-api:1.2, org.glassfish.web:jstl-impl:1.2,
  73  javax.el:el-api:1.0, joda-time:joda-time:1.6, javax.servlet.jsp:jsp-api:2.1, commons-codec:commons-codec:1.4; updated p
  74  roject type to war; added dependencies org.apache.tiles:tiles-core:2.2.1, org.apache.tiles:tiles-jsp:2.2.1]
  75  Updated SRC_MAIN_WEBAPP\WEB-INF\views\footer.jspx

  • Webアプリケーションに必要なweb.xmlなどのファイルが生成されました。

  • また、Rooで作成されるのはSpringMVCアプリケーションですので、webmvc-config.xmlなどのSpringMVCのファイルも生成されます。

  • さらにデフォルトの画面を表示するためのファイルも生成されています。Rooで生成されるSpringMVCアプリケーションでは画面表示にtilesとjspxを使用しているため、デフォルト画面や共通のヘッダ、フッタ用のjspxファイルやtagxファイルが生成されました。CSSや画像ファイルも生成されます。

  • 次に各EntityのControllerを作成していきます。Project EntityのControllerを作成するには下記のようにcontroller scaffoldコマンドを実行します。

   1  roo> controller scaffold --class ~.web.ProjectController --entity ~.model.Project
   2  Created SRC_MAIN_JAVA\com\example\web
   3  Created SRC_MAIN_JAVA\com\example\web\ProjectController.java
   4  Updated SRC_MAIN_WEBAPP\WEB-INF\spring\webmvc-config.xml
   5  Created SRC_MAIN_JAVA\com\example\web\ApplicationConversionServiceFactoryBean.java
   6  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects
   7  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml
   8  Updated SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml
   9  Created SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx
  10  Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\menu.tagx
  11  Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\item.tagx
  12  Created SRC_MAIN_WEBAPP\WEB-INF\tags\menu\category.tagx
  13  Updated SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx
  14  Updated SRC_MAIN_WEBAPP\WEB-INF\views\projects\views.xml
  15  Updated SRC_MAIN_WEBAPP\WEB-INF\views\menu.jspx
  16  Updated SRC_MAIN_WEBAPP\WEB-INF\i18n\application.properties
  17  Created SRC_MAIN_JAVA\com\example\web\ProjectController_Roo_Controller.aj
  18  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\list.jspx
  19  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\show.jspx
  20  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\create.jspx
  21  Created SRC_MAIN_WEBAPP\WEB-INF\views\projects\update.jspx
  22  Created SRC_MAIN_JAVA\com\exampler\web\ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj

  • --classオプションでControllerクラス名を指定し、--entityオプションで対象になるEntityを指定します。上記の例ではProjectControllerという名前のControllerクラスが作成されました。また、Project Entityに対するCRUD画面表示用のjspxファイルや、tilesの設定ファイルも生成されています。

  • これだけでProject Entityに対する一覧表示、詳細表示、作成、更新、削除の画面・機能が一通り提供されてしまいます。

  • 同様に各Entityに対してControllerを生成します。

  • これでWebアプリケーションとして動作するようになりましたので、コマンドプロンプトからmvnコマンドを実行してアプリケーションを起動します。(roo shellではなくコマンドプロンプトです。)

   1  >mvn jetty:run

  • Webブラウザから下記のURLでアクセスすることが出来ます。

   1  http://localhost:8080/example

  • 画面左側のメニューから各Entityの操作が可能になっています。
posted by Png akanuma on Thu 1 Dec 2011 at 08:27

新しい環境に移行すべく、ruby-1.9.3, rails-3.1.3 で作ったwebアプリをherokuにデプロイしてみたりしています。 いくつか注意点があったのでメモ。

application.css isn't precompiled

手元の環境で動いていても、いざデプロイすると以下のようなエラーが出ることがあります。

   1  ActionView::Template::Error (application.css isn't precompiled):

事前に bundle exec rake assets:precompile してから生成物をgitに含めてデプロイすればいいのですが、自動的に生成して欲しい場合には、 config/environments/production.rb

   1    config.assets.compile = true

を指定します。これで勝手に生成してくれます。

Could not find a JavaScript runtime

これもassetsの生成に関する問題なのですが、jsファイルを生成するにあたって、jsのランタイム環境が必要になります。 これもherokuの環境でやるためには、Gemfile に以下を追加します。

   1  group :production do
   2    gem 'therubyracer-heroku'
   3  end

これでok

posted by Png genki on Thu 1 Dec 2011 at 04:14 with 2 comments