2011年6月30日木曜日

IKEAで本棚を買う



この本棚を買いました
最初は通販で買おうと思ったのですが、送料を見てびっくり。この本だなの重さだと和歌山まで¥8400でした。本棚が¥15900で送料が¥8400はいまいちなので、直接IKEAに行って買ってきました。
それにしても、これぐらいの大きさなら軽自動車にも十分に入りますね。
今はクローゼットの中にこの本だなを入れて、いろんなものの収納スペースとして使っています。

家族旅行

神戸フルーツフラワーパークに行ってきました。フルーツもプールもないシーズンOFFでしたが、小さい子供がいれば結構楽しめるのではないでしょうか?(あじさいはありました)

2011年6月6日月曜日

遂にルートカンター(登頂記録)の初期バージョン完成

去年の秋頃から考えて、作り始めたのは先週。rails開発から少し離れていたので、勘を取り戻すのに少し時間がかかりました。
最初に考えていたのより機能はかなり少なくなって、最小限の機能しか残っていませんが、どれくらい便利なものかを検証するに最低限の機能は付けているつもりです。
登頂記録を使いたい人は誰でも気軽に使ってください。その結果、意見があればトップページに書いてあるように意見を下さい。ルートカウンター(登頂記録)



それで、今日は午前中に登頂記録に情報を追加する為に葛城山に登ってきました。最近自転車の乗っていなかったので、脚力はかなり落ちています。

2011年6月4日土曜日

passenger での複数サブディレクトリ



インストール時のコメントを読んでいるとアパッチのドキュメントルートにrailsで作成したpublicディレクトリを設定する必要がある様なことを書いてあるので、複数のrailsを公開する場合、virtualhostしかないと思っていましたが、RailsBaseURI で対応出来るのですね。もう少し早くドキュメントを読めば良かった。。

複数プロジェクトで例
1.私の環境ではドキュメントルートは /var/www/html になっているので、/var/www/rails/storeとstore2を作成(http経由で見えないところに作成)

2.それぞれのプロジェクトのownerを apache:apache に変更。 rootでは動作しないようです。

3./var/www/rails/storeとstore2内のpublicを/var/www/html/rails/storeとstore2にシンボリックリンクを張る。(http経由で見えるところにpublicのみシンボリックリンクをはる)
cd /var/www/html/rails
ln -s /var/www/rails/store/public store
ln -s /var/www/rails/store2/public store2

3./etc/httpd/conf.d にrails.confをファイルを作り、中身を以下のようにする
#PassengerRuby...までがpassengerインストール時に指示された内容

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7
   PassengerRuby /usr/local/bin/ruby
   
#以下が追加した内容
 RailsBaseURI /rails/store
    <Directory /var/www/html/rails/store>
    AllowOverride all
    Options -Multiviews
   </Directory>


    RailsBaseURI /rails/store2
    <Directory /var/www/html/rails/store2>
    AllowOverride all
    Options -Multiviews
   </Directory>








--------------------------
結構時間がかかった





2011年5月31日火曜日

ブラウザからタイムゾーンの読み取り

HTTP request headersにはタイムゾーン情報は無いようです。サーバー側がブラウザのタイムゾーンを受け取るには、大抵の人が提案しているjavascript経由しかなさそうですね。
言語はヘッダーにあるのに、残念です。
(http://matatabi-on-rails.blogspot.com/2010/05/rails.html)
以下のような感じでクッキーに時間のオフセットをjavascriptで書き込んで、サーバー側でそれを読み込んで、セットしているようです。

javascript:
document.cookie = 'tzoffset='+ (new Date()).getTimezoneOffset();

サーバー rails:

 def set_time_zone
    Time.zone = - cookies[:tzoffset].to_i / 60
 end


2011年5月28日土曜日

久しぶりにrailsの予約語ではまる

rootコントローラを作った場合、XXX_pathのヘルパー関数は正しく動作しません。root_path(Y)を指定した場合、 ZZZZ/root/Y への遷移を予想しますが、実際はルートにセットしたページに遷移します。
rootは正しくは予約語では無いようですが、1時間ほどはまったので書き込んでおきます。
railsの予約語はここにあるみたいです。http://wiki.rubyonrails.org/rails/pages/ReservedWords
railsの予約語は多いな。

2011年5月21日土曜日

rails コメント投稿機能の追加


WEB+DB 58  25ページぐらいにあります。
少し複雑になっているけど、コメント追加部分だからこんなもんだと思う。

----------------------------------
ItemにCommentモデルを追加していくサンプル
----------------------------------
//コメントモデルを作成  
$rails g model comment item:references comment:string name:string
$rake db:migrate

//コメントのコントローラー作成
$rails g controller comments

//itemsとcommentsにhas_manyの関係を持たす
app/models/item.rb
has_many :comments


//itemsの中にcommentsのルーティグを追加
confit/routes.rb
resources :items do
  resources :comments, :only =?[:new, :create]
end

//パーシャル作成命令(これはいい感じ。)
app/views/items/show.html.erb
の下の方
<%= render @item.comments.build %>


//パーシャルの実体
app/views/comments/_comment.html.erb
<%= form_for [comment.item, comment] do |f| %>


    <%= f.label :comment , 'any comment?' %>
    <%= f.text_field :comment %>
 

 

    <%= f.label :name ,'who are you?' %>
    <%= f.text_area :name %>
 

 

    <%= f.submit %>
 

<% end %>

//itemに関連したcomment作成
app/controllers/comments_controller.rb
の下の方
class CommentsController < ApplicationController
def create
item = Item.find params[:item_id]
item.comments.create params[:comment]
redirect_to item
end
end

// コメントの表示
app/views/items/show.html.erb
の下の方
comment
<% @item.comments.each do |comment| %>
<%= "#{comment.comment} by #{comment.name}" %>
<% end %>