ruby1.9もruby1.9.2がリリースされ、そろそろ移行してみようかなと思ってます。
ということで、早速試してみたw
まずはruby1.9.2をインストール。
macportsでのインストールをする。
とりあえず、以下を実行してmacportsを最新にする。
$ sudo port selfupdate
終わったらrubyのインストール。
macportsではruby19という名前でインストールできる。
$ sudo port install ruby19
# fetch failedとかいうError が出た。どうもfetchに失敗しているらしい。
# 詳細を見ようと以下のコマンドで試す。
$ sudo port -d install ruby19
なぜかインストールできたw まあリポジトリの問題だったのかも。
これで一応、ruby1.9.2のインストールは完了。
$ /opt/local/bin/ruby1.9 -v
これで ruby1.9.2 が入ったことが確認出来ます。
いつものごとくgemからインストール。
$ sudo gem install rails
# Documentの生成に失敗したりしてたけどまあいいや。
$ rails -v
これで確認出来る。
インストール完了。
rails3.0ではアプリの作り方も変わっている感じ。
# rails new [apps_path] というコマンドを打つ。
$ rails new demo
あれ、前からだっけ?確かnewはなかったような気がするけども。
まあ、これで作成できた。
railsを入れたらとりあえず試すのがscaffold。
サンプルとかが見れるので、ありがたい。
routingとかも設定変わってると思うのでこれで確認する。
$ rails generate scaffold Post content:string
ふむ。scaffoldの構文が前とちょっと変わっているような気がする。
出来上がったもののなかにもview以下に_form.html.erbなるものが追加されとるなー。
とりあえず今日はここまで。
]]>すっかり忘れてたw
#新規作成
/usr/local/apache/bin/htpasswd -c svnusers hogetarou
#追加
/usr/local/apache/bin/htpasswd -b svnusers hogetarou hogetaroupassword
これで忘れないかというとたぶん忘れる。
]]>僕の場合、httpdはソースからビルドしてインストールするのだが、あまりこの辺の情報ってない気がするね。
Pathを通せば、問題なくPassengerをインストールできるんだけど、sudoで色々やってるとハマるので気をつけること。
手順としては以下のように進める。
httpdをソースからインストールしているとして、
$sudo gem install passenger
$sudo passenger-install-apache2-module
これでOKなはずなんだが、エラー。
Checking for required software... * GNU C++ compiler... found at /usr/bin/g++ * Ruby development headers... found * OpenSSL support for Ruby... found * RubyGems... found * Rake... found at /usr/local/ruby-1.8.7/bin/rake * rack... found * Apache 2... found at /usr/sbin/httpd * Apache 2 development headers... not found * Apache Portable Runtime (APR) development headers... not found * Apache Portable Runtime Utility (APU) development headers... not found
となる。
ソースからインストールした場合、全部持っているので、not foundなのはおかしい上に認識しているhttpdのパスが違う。
$ sudo yum list installed | grep httpd
調べてみると案の定、yum で httpd がインストールされてた。
即、アンインストール。
$ sudo yum remove httpd
さて、これでいけるかと思いきや、またまたエラーがでた。
Checking for required software... * GNU C++ compiler... found at /usr/bin/g++ * Ruby development headers... found * OpenSSL support for Ruby... found * RubyGems... found * Rake... found at /usr/local/ruby-1.8.7/bin/rake * rack... found * Apache 2... not found * Apache 2 development headers... not found * Apache Portable Runtime (APR) development headers... not found * Apache Portable Runtime Utility (APU) development headers... not found
なんだと。。
PATHの問題だと思い、PATHを設定することにした。
$ export PATH=$PATH:/usr/local/httpd-2.2/bin
$ sudo passenger-install-apache2-module
Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... not found
* Apache 2 development headers... not found
* Apache Portable Runtime (APR) development headers... not found
* Apache Portable Runtime Utility (APU) development headers... not found
だが、しかし見つからない。 なぜだ。。なぜなんだと小一時間悩んだ。
問題は sudo の仕様にあった。
sudo は環境変数を初期化してしまうため(前に調べた気がしたけど、すっかり忘れてた)、httpdへのパスが通ってなかったのだ。
環境変数を引き継ぐのは sudo -i を使う。
もしくはもうrootでやっちゃっていいかも。
$ su
# export PATH=$PATH:/usr/local/httpd-2.2/bin
# passenger-install-apache2-module
Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... found at /usr/local/httpd-2.2.15/bin/httpd
* Apache 2 development headers... found at /usr/local/httpd-2.2.15/bin/apxs
* Apache Portable Runtime (APR) development headers... found at /usr/local/httpd-2.2.15/bin/apr-1-config
* Apache Portable Runtime Utility (APU) development headers... found at /usr/local/httpd-2.2.15/bin/apu-1-config
いけたぜーーーーーーーーーーーーーーーー!!!
超はまったけど、よかった。]]>
慣れてきたらもう開発環境自体Linuxでいいのかもしれない。
Ubuntuが気になってるしね。
大体、まとめサイトがあるようなので、ポイントだけ書いていく。
メモリ512MB, コア1、ハードは10Gをとりあえず割り当てといた。
まあたぶんこれで問題ないと信じたいw
ネットワークインストールのドキュメントがあまりなかったので、メモ書き。
CentOSのHomePageからDownloadリンクをたどり、ミラーでCentOS-5.5-x86_64-netinstall.isoをゲット。
VMwareを起動して、新規作成時にダウンロードしたisoを指定する。
VMwareToolがいるか聞かれるのでダウンロードしてくださいな。
で、その後はいつものCentOSのインストール画面になるので、ボンボンすすめてくだしあ。
言語(Japanese), キーボード(jp106), インストール方法(HTTP)と進むとTCP/IPの設定画面が出てくる。
Web site nameとCentOS directoryを入力するように促されるので、それぞれ、”ftp.riken.jp”と”Linux/centos/5.4/os/x86_64″を入力。
32bitの人はx86_64のところは場合によってはi386にするといいはず。
とても参考になりました。
ありがとうございます!
]]>以前も、データベースにアクセスできなくったぐぐったにもかかわらず、忘れていたのでメモ。
DBDDesigner4にはリバースエンジニアリング機能がある。既存DBからER図を作ってくれる優れもの。
メニューの[ Database > Reverse Engineering ] でデータベースから接続をするとER図ができる仕組み。
だが、しかしUsername/Password Invalidとかいうエラーの嵐。
ふざけんなと思ったら。
MySQL4.1以降に接続するときは、パスワードをmysqlに変更する必要があるんだって。
mysqlというユーザーを一緒に作ってパスワードを設定しなおしたらうまくいった。
SET PASSWORD FOR “[username]“@’[host]‘ = OLD_PASSWORD(‘[somepassword]‘);
これで終了。
無事接続できましたとさ。
]]>使い方は簡単ですなー。
まー、環境構築手順とかあとでのせときます。
]]>要するにページ遷移後にhttp://foo.com/index#hogehogeとするとHTML要素のIDがhogehogeの部分を表示するということです。
よく「このページのTOPへ」なんて書いてありますよね。
アレです。Rails2.3.5で試しましたよっと。
なにやら
<%= link_to "hogeの一番下へ", :controller => :index, :action => :index, :anchor => :hogehoge %>
とやるみたいですな。
試したらうまくいきました。
ユーザービリティをあげる意味でも単純なのでぜひ。
]]>マニュアルを見ても、ググっても答えが分からない。
通常、Like検索の部分一致を成立させるには%を使う。
SELECT * FROM hoge WHERE foo LIKE "%bar%"
こんな具合。
んで[ %, _ ]の2文字を検索する場合、通常、[ \ ] でエスケープする必要がある。
ワイルドカードだかららしい。
つまり [ \%, \_ ] としてやれば [ %, _ ] を検索できるというわけ。
では [ \ ] を検索するにはどうするのか??
マニュアルによると[ \\\\ ]とすればいいらしい。
Likeの場合、パーサーにより一度2重化され、[ \\ ] となり、パターンのマッチのときにさらに2重化され [ \ ] となり検索できる仕組みらしい。
んで、早速試す。
SELECT * FROM hoge WHERE foo LIKE "%\\\\%"
だが、しかし・・・。
0件なんですけどーーーーーーーーw
結局、以下のようにしたらうまくいった。
色々試した結果。
SELECT * FROM hoge WHERE foo LIKE "%\\\\\\%"
なぜなんだ。。
うーむ。
さらに [ \ ] のエスケープをRailsでのコードに落とし込むと。
def self.escape_query(query) return nil unless query query.gsub(/\\/,'\\\\\\\\\\').gsub(/%/, '\%').gsub(/_/, '\_') end
なぜだ?
なぜなんだ・・・。
大きな勘違いをしてるんでしょうか。
教えてエロイ人。
]]>色々探したけど、日本語の情報がなかった(2010/06/09 12:00現在)ようなので共有。
どうやらDNSがダウンしてるらしい。
現象は以下のようなことが起こりますよっと。
ERROR: http://rubygems.org/ does not appear to be a repository. ERROR: could not find gem rails locally or in a repository.
んで、対策はこちら。
# rubygems DNS is temporarily down, put this into your /etc/hosts to install gems, # but don't forget to remove the entries once their DNS is back up again 72.4.120.124 rubygems.org 207.171.181.231 production.s3.rubygems.org 216.137.45.24 production.cf.rubygems.org
ということで hosts に上記を書き込み、無事解決。
Windows XPの場合→「C:\WINDOWS\system32\drivers\etc」
DNSが復旧したら元に戻すのを忘れないでね!とのこと。
忘れずに戻すようにしないといかんですな。
]]>なかなかこれが面白い。CometといえばLingrというサービス。
技術の総称で、要するに疑似pushをするということ。
HTTPリクエストつかんでおいて、あるリクエストをトリガーにつかんでおいたすべてのリクエストに対してレスポンスを返すらしい。
こういうのを実際にサービスに使ってみるというチャレンジと発想を持ったエンジニアになりたいなー。
久しぶりにJavaを読むのは楽しいね。
]]>