Rails4でカラム変更(マイグレーション)
redmineの移行 windows BitNami -> ubuntu
Windows Server2003で動いているBitNami redmine 2.1.6を
UbuntuServer 14(apache2 + passenger)へ移行したのでメモ。
移行するデータは2つ
1. MySQLのデータ
mysqldumpを使って吐き出す
mysqldump -p bitnami bitnami_redmine -pパスワード >dump.sql
mysqlコマンドで取り込む
mysql -u redmine -pパスワード データベース名 < dump.sql
2. 添付ファイル
redmine/htdocs/filesの内容をまるっとコピーしてredmine直下のfilesに貼り付ける
ハマったのが以下。
filesの権限はwww-data(apache2を動かしてるユーザ)でないと書き込みできない。
移行したファイルの権限はwww-dataで644。
sinatra + hamlでselectの初期値
sinatra + hamlでselectの初期値を設定するのに一苦労。
rubyの方はこんな感じ
get '/' do @kbn = 'B' haml :index end
hamlはこんな感じ
%select %option %option{:value=>'A', :selected=>@kbn == 'A'} A %option{:value=>'B', :selected=>@kbn == 'B'} B %option{:value=>'C', :selected=>@kbn == 'C'} C
selected属性にtrueが入ればいいようなので、変数を比較させた。
もっと良い方法がある気がする。
rbenvでbundleのバージョン
bundleでrubyzipを導入しようとしたらruby >= 1.9.2が必要と言われた。
ruby -v で見ると
ruby 1.9.3p547 (2014-05-14 version 45962) ....
と出たのでおかしいなと思い、which bundleしたら
/usr/bin/bundle
そのbundleファイル見てみたら先頭に
#!/usr/bin/ruby
確かに/usr/bin/rubyにはOSインストール時に入っていた1.8のrubyしか無い。
http://qiita.com/emadurandal/items/a60886152a4c99ce1017
ここを参考にrbenvのgemでbundle入れて動かしてみた。
とりあえず動いたんだけど、unicorn動かすのに以下のように書かないといけなくてなんか変。
rbenv exec bundle exec unicorn
もっとしっかりruby、rbenv、gem、bundleについて調べねば。
CakePHP2のファイルダウンロードで大ハマリ
確信はない。
以下の様にファイルのダウンロードアクションを作成した。
function download($id = null){ $file = $this->File->findById($id); $this->response->file(APP.'upload_files'.DS.$file['File']['name']); return $this->response; }
すると、sqlログのところにwhere files.id = '/var/www/......'
というselect文が出力されている。
何故かこれのせいでエラー。
もしやと思ってテーブルとモデルの名前を変更。
FILES -> ATTACHMENTS
謎のsqlは出なくなり、ダウンロードも出来た。
FILEという名前のモデルはCakePHPが使っている?
ヘルパーで他のヘルパー参照【CakePHP2】
ヘルパーを自作するにあたって、セッションを扱いたかったのでヘルパー内でSessionヘルパーを呼び出した。
ただこれだけでオーケー。
public $helpers = array('Session');
ちなみに、viewの変数を扱うには以下の様にする。
$this->_View->get('hoge');
$thisの_Viewで扱えるみたい。