merbのslice機能を使ってみる

merb-uiというgemを利用してmerb-sliceの機能を実装してみる

  • まずはgemをインストール
bash-3.2$ sudo gem install merb-ui
Password:
Successfully installed merb-ui-0.4.9
1 gem installed
Installing ri documentation for merb-ui-0.4.9...
Installing RDoc documentation for merb-ui-0.4.9...
  • merb-uiを利用することを宣言する(config/dependencies.rb)
dependency "merb-ui"

とすると、アプリのrakeタスクが以下のように表示されるはず。

bash-3.2$ rake -T | grep merb_ui
rake slices:merb_ui:copy_assets                           # Copy public assets to host application
rake slices:merb_ui:freeze                                # Freeze MerbUi into your app (only merb-ui/app)
rake slices:merb_ui:freeze:app                            # Freezes MerbUi by copying all files from merb-ui/app to your application
rake slices:merb_ui:freeze:app_with_gem                   # Freezes MerbUi as a gem and copies over merb-ui/app
rake slices:merb_ui:freeze:gem                            # Freezes MerbUi by installing the gem into application/gems
rake slices:merb_ui:freeze:models                         # Freeze all models into your application for easy modification
rake slices:merb_ui:freeze:unpack                         # Freezes MerbUi by unpacking all files into your application
rake slices:merb_ui:freeze:views                          # Freeze all views into your application for easy modification
rake slices:merb_ui:install                               # Install MerbUi
rake slices:merb_ui:migrate                               # Migrate the database / Migrate the database
rake slices:merb_ui:patch                                 # Copy stub files and views to host application
rake slices:merb_ui:preflight                             # Test for any dependencies / Test for any dependencies
rake slices:merb_ui:setup_directories                     # Setup directories
rake slices:merb_ui:spec                                  # Run slice specs within the host application context
rake slices:merb_ui:spec:controller                       # Run all controller specs, run a spec for a specific Controller with CONTROLLER=MyController
rake slices:merb_ui:spec:default                          # Run specs
rake slices:merb_ui:spec:html                             # Run all specs and output the result in html
rake slices:merb_ui:spec:model                            # Run all model specs, run a spec for a specific Model with MODEL=MyModel
rake slices:merb_ui:spec:view                             # Run all view specs, run specs for a specific controller (and view) with CONTROLLER=MyController (VIEW=MyView)
rake slices:merb_ui:stubs                                 # Copy stub files to host application
bash-3.2$ 
  • 次は持ってきたmerb_uiを自分のアプリ内に内包するよう以下のコマンドを実行します
bash-3.2$ rake slices:merb_ui:copy_assets
(in /Users/kuro/merb/slice-test)
Loading init file from /Users/kuro/merb/slice-test/config/init.rb
Loading /Users/kuro/merb/slice-test/config/environments/development.rb
Copying assets for MerbUi - resolves any collisions
  • copied public/slices/merb-ui/javascripts/keybinder.js
  • copied public/slices/merb-ui/javascripts/main.js
  • copied public/slices/merb-ui/images/bezel.png
  • copied public/slices/merb-ui/images/glass.png
  • copied public/slices/merb-ui/images/metal.png
  • copied public/slices/merb-ui/images/nil.png
  • copied public/slices/merb-ui/images/plastic.png
  • copied public/slices/merb-ui/images/rubber.png
bash-3.2$

javascriptファイルやら画像ファイルやら持ってきてくれました。

きっとmerb-uiと呼ばれるものなのでuiで利用するんだと思います。
ですので先に簡単なひな形を作成しておきます。
ちなみにO/R mapperはactiverecord、DBはMySQLを利用するものとします。

bash-3.2$ merb-gen resource user name:string,age:integer,introduction:text --orm=activerecord

で、適当にconfig/database.ymlを編集して

bash-3.2$ rake db:create
bash-3.2$ rake db:migrate

CRUDつきのUserコントローラが出来上がりです。