CloudBees上でGrailsにてDBにアクセス
CloudBees にGrailsアプリをアップできたので、DBにアクセスしてみた。
設定
以下にアクセスして、Databaseの新規追加を行う。
https://grandcentral.cloudbees.com/
CloudBees上での各種設定方法は、僕自身も四苦八苦しているうちに登録方法をみにつけたので省略する。
デフォルトではMySQLデータベースとして登録される。
Grailsアプリ上の設定
以下のサイトの Configuring CloudBees DataSources の内容を利用した。 CloudBees RUN@cloud Documentation
そのままコピペした。コピペした上で、以下の3文字列を置換した。
- BEES_DB
- BEES_DB_USER
- BEES_DB_PASS
設定後は以下のコマンドを実行し、warファイルをデプロイする。
# ${app_name}は適切に書き換えること
$ grails prod war
$ grails bees-app-deploy ${app_name}
結果を確認してみる
ざんねんながら自分のアプリケーションにアクセスしてみても 404エラー となっている。
http://${app_name}.${account_name}.cloudbees.net/
exception is org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.cloudbees.jdbc.Driver' for connect URL '[[jdbc:cloudbees://${app_name_db}]]'
at org....
...
...
com.cloudbees.jdbc.Driver
を生成できませんでした、と。
解決方法
2つある。
解決方法その1
CloudBeesの提供していると思われるJDBC機能を利用しない方法。DataSource.groovyを書き換える。
DataSource.groovy
dataSource {
pooled = true
// driverClassName = "com.cloudbees.jdbc.Driver"
driverClassName = "com.mysql.jdbc.Driver"
}
environments {
// ...
production {
dataSource {
dbCreate = "update"
// url = "[[jdbc:cloudbees://${app_name_db}]]"
url = "jdbc:mysql://ec2-75-xxx-xxx-xxx.compute-1.amazonaws.com/${app_name_db}" // 適宜書き換える必要がある箇所
// mysqlサーバー名も僕の環境のものを一部掲載しておく。
username = "${db_user}" // 適宜書き換える必要がある箇所
password = "${db_password}" // 適宜書き換える必要がある箇所
}
}
}
解決方法その2
url属性情報 を一部直さないといけないぽい。
DataSource.groovy
dataSource {
pooled = true
driverClassName = "com.cloudbees.jdbc.Driver"
}
environments {
// ...
production {
dataSource {
dbCreate = "update"
// url = "[[jdbc:cloudbees://${app_name_db}]]"
url = "jdbc:cloudbees://${app_name_db}" // このカッコ、いらないんだって…クソッ
username = "${db_user}" // 適宜書き換える必要がある箇所
password = "${db_password}" // 適宜書き換える必要がある箇所
}
}
}
わかりにくい!
以上
ディスカッション
コメント一覧
まだ、コメントがありません