2012年2月25日土曜日

pgとかrakeとかdb:migrateとか

4日ぶりくらいに環境構築を再会。

で、まだはまり続けています。

heroku rake db:migrate

取りあえず、postgresqlをインストールしたところにpgを入れなきゃならないようなので、以下のコマンドを。

gem install pg -- --with-pg-dir /opt/local/lib/postgresql90

でも、これでもだめ。

もういや。。。

でも、ふとなんでdb:migrateするんだっけと振り返る。
heroku上のdbをmigrateするんだよね?

うん。じゃあ、git add したっけ???

してないやーん!

ということで、色々いじったプロジェクトをgit addしました。

んで、heroku rake db:migrateしたら成功!!!

お恥ずかしながら、こんなところではまってました(泣

ただ、はじめはできていなかったので、pgとか入れた辺りでaddしとけばできてたのかな?

根本原因はわからないが、ググったことした中に正解があるはず。。。

2012年2月20日月曜日

Macにrubyをインストール3

今日も今日とてはまってます。

取りあえず、はまった理由はこいつ⬇


$ heroku rake db:migrate
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
rake aborted!
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.)

取りあえず、この辺りが問題なのだと踏んでググると、以下の情報が有力そう。
http://d.hatena.ne.jp/celitan/20090209/1234158866#20090209f1

まだまだはまる。

はてさて、herokuを利用したFacebookアプリを作ろうかと思い、Macに環境を用意しているところ。

はまりにはまっています。

取りあえず、

heroku rake db:migrate

ではまり中。

adapter: `gem install activerecord-postgresql-adapter`


(pg is not part of the bundle. Add it to Gemfile.)(RuntimeError)

とか書いてあるけど、そんなinstallしようとすると、そんなのねぇよって怒られる。
んで、ググって見つけたのがこのページ⬇

全部試してみたが、動かん。なぜ?
本格的に仕様書を見始めるか悩む。

2012年2月17日金曜日

Macにrubyをインストール2

RVMいれて、gem install 1.8.7を入れた後、railsを入れようとするも失敗。
llvm-gccのせいというのはわかっていたが、1.8.7をllvm-gccでコンパイルしていたのが問題。
一旦、rvm remove 1.8.7する。

そして、gccを入れる。
⬇からpkgをdownload。

⬇インストール完了!
Installation successful!

Make, brew, gcc, and purge to your heart's content!

Install Homebrew!

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"


そして、.bash_profileに環境変数追加。
$ export CC=/usr/bin/gcc-4.2 >> ~/.bash_profile

そして、改めて、rvm install 1.8.7。
成功!

やっと⬇の続きができる。長かったぁ。
http://gihyo.jp/dev/serial/01/heroku/0002?page=2

2012年2月16日木曜日

Macにrubyをインストール

はじめに、MacPortsを使ってRubyをインストールしようとしてエラー。
問題は、Xcodeが3.Xだった。

そう、最近乗り換えました。
SnowLeopard ➡ Lionへ。

TimeMachineから移行したので、Versionが古い。
MacPortsはXcodeを利用するみたい。

で、Xcodeをアンインストールする。

$ sudo /Developer/Library/uninstall-devtools --mode=all

終わったら、AppStoreからXcode4.Xを入れる。
#入れるの1Hくらいかかったし。

で、取りあえず、rvmを入れる。
rvm install 1.9.2
をタイプしたら、エラー。
C compilerが見つからないって言ってる。
でも、適当なCファイル作ってコンパイルはできた。

問題は、LionがDefaultで使用しているコンパイラが問題みたい。
http://blog.jeffdouglas.com/2011/08/01/ruby-1-9-2-install-errors-with-mac-os-x-lion-and-rvm/

これが問題。⬇
lrwxr-xr-x     1 root   wheel        12  2 15 23:55 gcc -> llvm-gcc-4.2

なので、llvmじゃないgccを入れる。
入れ方⬇
http://kin2ku.org/protein/wiki/tadanomemo/memos/2011/10/18/mac_lion_gcc


環境構築に時間かかるぅー。

と、思っていたら、私が遭遇している現象をちゃんとまとめてくれている人がいる!
感謝感謝!
http://d.hatena.ne.jp/holypp/20120212/1328992440

2012年2月7日火曜日

【EffectiveJava】項目41

「オーバーロードを注意して使用する」です。

結論:オーバーロードは極力使うな。特に引数パラメータ数が同じ時は。

オーバーロードはプログラマを混乱させる。

興味深い題材を2つ挙げる。

◆オーバーロードとオーバーライドのコンパイル時の違い。
オーバーロードされたメソッドはコンパイル時に選択される。 → 静的
オーバーライドはメソッドが呼び出されたオブジェクトの実行時の型に基づいて選択 → 動的

この事実から、オーバーロードしたメソッドで型をチェックさせようとすると、コンパイル時の型が認識され、型チェックが正しく動作しない。
しかし、オーバーライドは動的なので大丈夫。


◆SetとListのremoveメソッド

これらのremoveメソッドに、Primitive型のint値を渡すと、意図しない値が削除されてしまうことがある。
これは、removeメソッドがListかつint型に関連するメソッドが2種類あり、それは引数の型が異なるが、引数の数が同じであることから問題が発生する。

問題は、Java1.5から導入されたオートボクシング機能により引き起こされる。
remove(int)とremove(Integer)によって振る舞いが異なる。remove(int)は、リストから指定された位置の値を削除します。
一方、remove(Integer)は、渡された引数の値(要素)を削除します。

この違いをプログラマに意識させるのは、混乱を招く、というのもその通りですね。