Skip to content

Lift CRUDify

Lift CRUDify published on Lift CRUDify へのコメントはまだありません

■LiftでCRUDするには

"lift crud"で検索すると、ご存じyuroyoroさんの以下のページが一番先頭に来る。

  • scalaのWebフレームワーク liftで遊ぶ(8) – いよいよModelでCRUDするぜ?

このエントリは2008年のものなので、情報が若干古くなってる(※)。Liftは良くも悪くも変更が多いので。

そのシリーズの(9)には以下のような事が書かれているんだけど、今のLiftにはCRUDifyなるtraitが存在する。

liftには、Railsscaffoldみたいにコマンド一発でドゥーン!とCRUDができるなんてことはありません。

※逆に言うと、かなり前からScala関連の記事を精力的に書いていてスゴいと思います。

Continue reading Lift CRUDify

LiftのSiteMap (2)

LiftのSiteMap (2) published on LiftのSiteMap (2) へのコメントはまだありません

最近またLiftをちょっと使い始めてる。以前SiteMapがわからねーって感じのエントリを書いたけど、さすがに分からないままにしておくのもまずいのでちょっと勉強した。

Boot.scalaでsitemapが以下のように定義されている。Menuをカスタマイズするにはここをいじればよい。

def sitemap = SiteMap(
Menu.i("Home") / "index" >> User.AddUserMenusAfter, // the simple way to declare a menu

一番簡単(かつそれ程間違っていない・・・はず)な説明としては、SiteMapは可変長個のMenuを引数として取る。なので、以下のようにMenuをカンマで区切って渡していけばよい。

def sitemap = SiteMap(
Menu.i("Home") / "index" >> User.AddUserMenusAfter, // the simple way to declare a menu
Menu.i("Test page") / "test" ,

 

Continue reading LiftのSiteMap (2)

sbtプロジェクトをEclipseから使う

sbtプロジェクトをEclipseから使う published on sbtプロジェクトをEclipseから使う へのコメントはまだありません

■やりたい事、sbtプロジェクト→Eclipseプロジェクト

Scalaでは標準の地位になりつつあるsbt。ただ、Javaユーザーのかなりの部分の人がEclipseを使っていると思うんだけど、そう言う人達にScalaを勧める時に「え?Eclipse使わないの?」とか言われると悲しいので、sbtのプロジェクトをEclipseを使う方法を1つ紹介。

sbtのWikiには3つの方法が紹介されているけど、それの2番。英語が読める人はこれを読めば大体分かるかな。

■環境

  • Eclipse 3.5(別に3.6でも良いと思うけど)
  • Scala plugin (当たり前だけど、お事前に入れておく必要有り)

■手順

Liftを例に取る。sbtのプロジェクト定義ファイル(LiftProject.scala)の最初の方は以下のようになってるけど、

import sbt._
class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {
val liftVersion = "2.2-RC4"

これを以下のように変える。

import sbt._
import de.element34.sbteclipsify._
class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) with Eclipsify {
val liftVersion = "2.2-RC4"

 

Continue reading sbtプロジェクトをEclipseから使う

EJBのJNDI lookupでNameNotFoundException

EJBのJNDI lookupでNameNotFoundException published on EJBのJNDI lookupでNameNotFoundException へのコメントはまだありません

■問題点

その名の通りJNDI lookupでEJBが見付からなくってNameNotFoundExceptionが発生。

環境:WebLogic 11g Release 1

■背景等

EJB 3だと以下のようにアノテーションを使ってEJBを呼び出すから、通常はJNDIルックアップとか必要ない。

// ビジネスロジックのインターフェース
@Local
public interface SomeInterface {
public void doSomething();
}
// ビジネスロジックの実装
@Stateless
public class SomeBean implements SomeInterface {
public void doSomething() {
// 処理
}
}
// Session Bean を使うクラス
public class Client {
// DI
@EJB
private SomeInterface foo;
}

今回は扱う業務データのファイルの種類毎にSession Beanがあって、Sessioin Beanの名前を動的に生成して使うようにしているので。

※ビジネスロジックをPOJOにして、呼び出されるSession Beanは1つにし、リフレクションでビジネスロジックのクラスを呼び出すという方法でも良いのかもしれないけど…いやー、この辺はよく分からん。

 

Continue reading EJBのJNDI lookupでNameNotFoundException

before_filterで後続をキャンセル

before_filterで後続をキャンセル published on before_filterで後続をキャンセル へのコメントはまだありません

Ruby on Railsの話。コントローラでbefore_filterを複数定義すると、定義された順番に呼ばれる。before_filterの典型的な使い方は、認証のチェックだったり渡された値のチェックだったり。で、チェックに引っかかった場合はエラーとする。

例えば3つのbefore_filterを定義していたとして、1つめのフィルターでチェックに引っかかった場合、後続のフィルターは処理する必要がない。その場合、フィルターがfalseを返すようにすると後続のフィルターが実行されない。

class FooController < ApplicationController
before_filter :filter1
before_filter :filter2
def filter1
if !check_something1
redirect_to error_page1
return false
end
end
# filter1がfalseの場合は実行されない
def filter2
if !check_something2
redirect_to error_page2
return false
end
end
end

 

EJB 3.0のSession BeanでEntityManagerを使う

EJB 3.0のSession BeanでEntityManagerを使う published on EJB 3.0のSession BeanでEntityManagerを使う へのコメントはまだありません

メモ

■環境

  • WebLogic 11g Release 1 

■やりたい事

EJB 3.0のSession Beanの中で、Entity Managerを使ってEntityオブジェクトを扱う。

Continue reading EJB 3.0のSession BeanでEntityManagerを使う

RMagickをCentOSに入れる。

RMagickをCentOSに入れる。 published on RMagickをCentOSに入れる。 へのコメントはまだありません

先月位から初めてのRuby on Railsの仕事をしてる。既存システムの移行・機能追加なので、初心者の自分にはぴったりのプロジェクト。

そのシステムではRMagickというRubyからImageMagickを使う為のgemを使ってるので、サーバーのCentOSにインストールしようとしたけど、依存しているパッケージのバージョン要件とかが結構面倒だった。RMagickはバージョン1系と2系があるけど、今回は2系を入れる(要件によりv2.5.2指定…)。

■必要なパッケージ

RMagickバージョン2はImageMagick 6.3.0以降が必要。その他にも色々必要。詳しくはこのあたり

一番の問題(と思われるの)は、CentOSでyumでインストールできるImageMagickのバージョンが古い事。非常にありがちな問題だけど。

Continue reading RMagickをCentOSに入れる。