01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
■ コンタクトフォーム
本書の通り記載を行いテストを行ってみたが、
Couldn't find template file for contact_mailer/sending in ["/Users/taka/NetBeansProjects/locus2/app/views"]というエラー。
- 連載:Redmineを運用するためのイロハを身につけようgihyo.jp … 技術評論社
とか、
- ニュース・文書・Wiki・フォーラム - バリケンのRuby日記 - Rubyist
- Redmine.JP Redmineにおけるwiki記法
■ 外部ホストからの接続を許可
デフォルトではローカルホストからの接続を許可しているのみなので、
外部からも接続可能とする場合には、
- /etc/mysql/my.cnf
bind-address = 127.0.0.1上記設定をコメントアウトするか、接続を受け付けたいアドレスに変えておく。
grant all privileges on *.* to god identified by 'password'; grant all privileges on *.* to god@localhost identified by 'password';
$ diff -u my.cnf my.cnf.org --- my.cnf 2008-06-29 00:35:29.000000000 +0900 +++ my.cnf.org 2007-10-12 23:52:41.skip-character-set-client-handshake000000000 +0900 @@ -19,7 +19,6 @@ [client] port = 3306 socket = /var/run/mysqld/mysqld.sock -default-character-set=utf8 # Here is entries for some specific programs # The following values assume you have at least 32M ram @@ -42,13 +41,10 @@ tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking - -skip-character-set-client-handshake -default-character-set=utf8 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. -#bind-address = 127.0.0.1 +bind-address = 127.0.0.1 # # * Fine Tuning # @@ -118,7 +114,6 @@ quick quote-names max_allowed_packet = 16M -default-character-set=utf8
- MySQLの使い方
■ GUI 管理ツール MySQL Administrator
MySQL Tools という
- MySQL Administrator
- MySQL QueryBrowser
- MySQL MigrationToolkit
というセットになっているようだ。
- MySQL :: MySQL GUI Tools Downloads
からダウンロード。
- 連載:Redmineを運用するためのイロハを身につけよう|gihyo.jp … 技術評論社
の記事が新しそうなのでこれに沿って作業する。
環境は、Ubuntu 7.10 に用意する。
必要なパッケージは、
- mysql-server
- ruby
- libmysql-ruby
- rubygems
のようだ。
全て入っているはず・・・と、apt-cache search にて確認するが、
rubygems は Ubuntu 環境には入れていなかった模様。いれておく。
$ sudo apt-get install rubygems $ gem -v 0.9.4
$ sudo gem install rake $ sudo gem install rails -v 2.0.2
mysql> create database redmine;作成した redmine データベースに、redmine ユーザを作成。
$ rake db:migrate RAILS_ENV="production" (in /home/taka/App/redmine-0.7.2) rake aborted! No such file or directory - /tmp/mysql.sock (See full trace by running task with --trace)上記エラー発生。
$ mysqladmin -u root -p version Enter password: mysqladmin Ver 8.41 Distrib 5.0.45, for pc-linux-gnu on i486 Copyright (C) 2000-2006 MySQL AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.45-Debian_1ubuntu3.3-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 1 hour 6 min 25 sec Threads: 6 Questions: 7587 Slow queries: 0 Opens: 103 Flush tables: 1 Open tables: 64 Queries per second avg: 1.904なるほど、/var/run/mysqld/mysqld.sock なんだ。
socket: /var/run/mysqld/mysqld.sock
$ rake db:migrate RAILS_ENV="production"うまくいく。
$ rake load_default_data RAILS_ENV="production" (in /home/taka/App/redmine-0.7.2) Select language: bg, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sr, sv, th, uk, zh, zh-tw [en] ja ==================================== Default configuration data loaded. Note: The rake task load_default_data has been deprecated, please use the replacement version redmine:load_default_dataおっと。本来は redmine:load_default_data の方を使わないといけなかったようだ。
config.action_mailer.perform_deliveries = false
ruby script/server -e production
Wiki エンジンとしての完成度が高いとの評判の Deki Wiki を使ってみることに。
まずはインストール。
環境は、Ubuntu 7.10。
ウェブでちらちらと見ている限り、かなりインストールの敷居が高い模様だが、
現在はパッケージングがうまくされているようにも思える。
さて、やってみる。
- Ubuntu 7.10 Deki Wiki Package Installation - MindTouch Deki Wiki
を参考にやってみる。
■ パッケージインストールのためのレポジトリを追加
/etc/apt/sources.list に
deb http://repo.mindtouch.com xUbuntu_7.10/を追加。
$ sudo apt-get update
$ sudo apt-get install html2ps poppler-utils wv gs tidy links パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています Reading state information... 完了 poppler-utils はすでに最新バージョンです。 以下の特別パッケージがインストールされます: libtidy-0.99-0 libwv-1.2-3 perlmagick 提案パッケージ: tetex-base weblint-perl xhtml2ps tidy-doc tetex-extra imagemagick 以下のパッケージが新たにインストールされます: gs html2ps libtidy-0.99-0 libwv-1.2-3 links perlmagick tidy wv アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 73 個。 1047kB のアーカイブを取得する必要があります。 展開後に追加で 4813kB のディスク容量が消費されます。 続行しますか [Y/n]? Y 取得:1 http://jp.archive.ubuntu.com gutsy-updates/main gs 8.61.dfsg.1~svn8187-0ubuntu3.4 [18.2kB] 取得:2 http://jp.archive.ubuntu.com gutsy/universe perlmagick 7:6.2.4.5.dfsg1-2ubuntu1 [170kB] 取得:3 http://jp.archive.ubuntu.com gutsy/universe html2ps 1.0b5-4 [105kB] 取得:4 http://jp.archive.ubuntu.com gutsy/main libtidy-0.99-0 20051018-1build1 [132kB] 取得:5 http://jp.archive.ubuntu.com gutsy/main libwv-1.2-3 1.2.4-2 [142kB] 取得:6 http://jp.archive.ubuntu.com gutsy/universe links 0.99+1.00pre12-1.2 [368kB] 取得:7 http://jp.archive.ubuntu.com gutsy/main tidy 20051018-1build1 [22.3kB] 取得:8 http://jp.archive.ubuntu.com gutsy/universe wv 1.2.4-2 [88.6kB] 1047kB を 0s で取得しました (1275kB/s) 未選択パッケージ gs を選択しています。 (データベースを読み込んでいます ... 現在 159916 個のファイルとディレクトリがインストールされています。) (.../gs_8.61.dfsg.1~svn8187-0ubuntu3.4_all.deb から) gs を展開しています... 未選択パッケージ perlmagick を選択しています。 (.../perlmagick_7%3a6.2.4.5.dfsg1-2ubuntu1_i386.deb から) perlmagick を展開しています... 未選択パッケージ html2ps を選択しています。 (.../html2ps_1.0b5-4_all.deb から) html2ps を展開しています... 未選択パッケージ libtidy-0.99-0 を選択しています。 (.../libtidy-0.99-0_20051018-1build1_i386.deb から) libtidy-0.99-0 を展開しています... 未選択パッケージ libwv-1.2-3 を選択しています。 (.../libwv-1.2-3_1.2.4-2_i386.deb から) libwv-1.2-3 を展開しています... 未選択パッケージ links を選択しています。 (.../links_0.99+1.00pre12-1.2_i386.deb から) links を展開しています... 未選択パッケージ tidy を選択しています。 (.../tidy_20051018-1build1_i386.deb から) tidy を展開しています... 未選択パッケージ wv を選択しています。 (.../archives/wv_1.2.4-2_i386.deb から) wv を展開しています... gs (8.61.dfsg.1~svn8187-0ubuntu3.4) を設定しています ... perlmagick (7:6.2.4.5.dfsg1-2ubuntu1) を設定しています ... html2ps (1.0b5-4) を設定しています ... libtidy-0.99-0 (20051018-1build1) を設定しています ... libwv-1.2-3 (1.2.4-2) を設定しています ... links (0.99+1.00pre12-1.2) を設定しています ... tidy (20051018-1build1) を設定しています ... wv (1.2.4-2) を設定しています ... Processing triggers for libc6 ... ldconfig deferred processing now taking place
$ sudo apt-get install dekiwiki
$ sudo a2ensite dekiwikiApache の設定を reload する。
$ sudo /etc/init.d/apache2 reload
But wait, you're not done yet! Please run the following commands manually from the command line to complete your installation: cd /var/www/dekiwiki/config mkdir /etc/dekiwiki cp -p mindtouch.host.conf /etc/dekiwiki cp -p mindtouch.deki.startup.xml /etc/dekiwiki cp -p LocalSettings.php /var/www/dekiwiki/ /etc/init.d/dekiwiki start Additionally, you might want to clean up your configuration files: cd /var/www/dekiwiki rm config/mindtouch.host.conf rm config/mindtouch.deki.startup.xml rm config/LocalSettings.php
$ port installed ruby The following ports are currently installed: ruby @1.8.6-p114_0+thread_hooks ruby @1.8.7-p22_2+thread_hooks (active)という状態で現在 1.8.7 が active。
$ sudo port deactivate ruby -v 1.8.7 ---> Deactivating ruby ---> Deactivating 1.8.7 Error: port deactivate failed: Registry error: 1.8.7 not registered as installed & active. $ port installed ruby The following ports are currently installed: ruby @1.8.6-p114_0+thread_hooks ruby @1.8.7-p22_2+thread_hooksオプションを指定し損ねたようだが、
$ sudo port activate ruby @1.8.6-p114_0+thread_hooks ---> Activating ruby 1.8.6-p114_0+thread_hooks $ ruby -v ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-darwin8.11.1] $ port installed ruby The following ports are currently installed: ruby @1.8.6-p114_0+thread_hooks (active) ruby @1.8.7-p22_2+thread_hooks1.8.6 が activate された。
引き続き Chapter 4。
■ 注文処理
Cart から、Order にデータを移して、保存する。
完了。
ここで、v2.1.0 の時に失敗したメッセージの日本語化を再度試してみる。
gettext は既に gem で導入済み。
$ gem list gettext *** LOCAL GEMS *** gettext (1.91.0)
require 'gettext/rails'を追加。
- find_or_initialize_by_<field_name> (<field_value>)
<field_name> を <field_value> でひきにいく。
もしなければ、<field_name> を <field_value>で埋めて新しいインスタンスを生成する。
- find_or_create_by_<field_name> (<field_value>)
もしなければ、<field_name> を <field_value>で埋めて新しいインスタンスを生成し、DB に保存まで行う。
field_name は一つだけしか指定できない訳ではないのがまた凄いところ。
find_or_initialize_by_first_name_and_last_name('Taro', 'Yamada')
なんてことも OK。
- Riding Rails: Multiple Ruby security vulnerabilities
- 任意のコードが実行される脆弱性について
$ sudo port upgrade ruby ---> Fetching ruby ---> Attempting to fetch ruby-1.8.7-p22.tar.bz2 from http://www.ibiblio.org/pub/languages/ruby/1.8 ---> Verifying checksum(s) for ruby ---> Extracting ruby ---> Applying patches to ruby ---> Configuring ruby ---> Building ruby with target all ---> Staging ruby into destroot ---> Deactivating ruby 1.8.6-p114_0+thread_hooks ---> Installing ruby 1.8.7-p22_2+thread_hooks ---> Activating ruby 1.8.7-p22_2+thread_hooks ---> Cleaning ruby $ ruby -v ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-darwin8.11.1]
- MOONGIFT: Railsをさらに加速するテクノロジー「Ruby Enterprise Edition」:オープンソースを毎日紹介
さて、Chapter 4 を ActiveScaffold のインストールから再開。
■ 商品管理
Rails のバージョンを v2.1.0 から v2.0.2 に戻したが、これであれば問題無し。
商品のモデルである Product とそのジャンル管理のモデルである Genre を追加し、
まずは管理者側の画面を用意していく。
ActiveScaffold はこの手の管理系を作るにはサクッといけてよいかもしれない。
- map.root が効かない
ルートへのアクセス(http://localhost:3000/)を products の index 表示に割り当てるのだが、
routes.rb への以下の記載だけでは効かない。
はて?と思っていたのだが、デフォルトで用意されている public/index.html があると、
そちらが優先されるようだ。
削除すると、正しく動作する。
- Ruby on Rails : ページの外見をカスタマイズ(後編) - WebOS Goodies
■ ショップ画面
今度はユーザ側が使用するショップの画面。
商品のサムネイル画像付きの一覧とその詳細画面を用意する。
ライトボックスを実装するために、ProtoThickBox を使用する。
- Spookies Labs
いろいろとライトボックスのライブラリは公開されていんだね。
- JavaScript + Ajax 実践サンプル集 - ライトボックスイメージビューアー
などに説明も。
■ ショッピングカート
ショッピングカートを作成する。
Cart モデルと CartItem モデルを追加する。
本書では Cart モデルを追加後、すぐに Cart モデルの記載を行っていくが、
CartItem モデルを作成後、Cart モデル、CartItem モデル、Product モデルの
関連を記載後、各モデルのコードの記載を行った方が理解しやすいだろう。
Cart モデルで、has_many の :through オプションが出てきた。
これは、
- The Pragmatic Bookshelf Agile Web Development with Rails, Third Edition
Chapter 18
Active Record Part II:
Relationships between Tables
18.3 belongs_to and has_xxx Declarations
Using Models as Join Tables p.348
以降で説明がある。
- ERB::Util#u のエンコーディングで日本語 NG
はて?エンコーディング後の文字列が変だな・・・
- ThickBox を :TB_iframe で使うと、インラインフレームで表示される
- Skynet
via MOONGIFT: Googleのデータ処理分散システムMapReduceのオープンソース実装「Skynet」:オープンソースを毎日紹介
Chapter 04 ショッピングサイトの作成
と、早速つまずく。。
Rails のバージョンは、v2.1.0 を使っているのだが、この章で使用する Active Scaffold
v.1.1.1 が Rails v2.1.0 にまだ対応していないようだ。
- Issue 515 - activescaffold - Google Code
さて、今の環境は、
$ ruby script/about About your application's environment Ruby version 1.8.6 (i686-darwin8.11.1) RubyGems version 1.1.1 Rails version 2.1.0 Active Record version 2.1.0 Action Pack version 2.1.0 Active Resource version 2.1.0 Action Mailer version 2.1.0 Active Support version 2.1.0 Application root /Users/hoge/NetBeansProjects/locus Environment development Database adapter sqlite3 Database schema version 20080618143529
$ sudo gem install rails -v 2.0.2確認。
$ gem list rails *** LOCAL GEMS *** rails (2.1.0, 2.0.2)最新版の v2.1.0 と v2.0.2 が確認できる。
rails _2.0.2_ locus2
$ ruby script/about About your application's environment Ruby version 1.8.6 (i686-darwin8.11.1) RubyGems version 1.1.1 Rails version 2.0.2 Active Record version 2.0.2 Action Pack version 2.0.2 Active Resource version 2.0.2 Action Mailer version 2.0.2 Active Support version 2.0.2 Application root /Users/hoge/NetBeansProjects/locus2 Environment development Database adapter sqlite3 Database schema version 3
$ svn propset svn:ignore "*.log" log $ svn propset svn:ignore "schema.rb" db $ svn propset svn:ignore "*.sqlite3" db
config.time_zone = 'UTC'見落としていた。。ここを JST に変えてやればいいのかな。
- 【連載】セカイ系ウェブツール考 (5) 「Ruby on Rails」の魅力を体験するなら、まずはコレ! ネット マイコミジャーナル
- Open Tech Press オープンソースのプロジェクト管理アプリケーションOpenProj、ダウンロード50万回を突破
2008/06/18
- Open Tech Press OpenProj:優れたソフトウェアだがドキュメントの欠如が問題
2008/02/28
- SourceForge.net: OpenProj - Project Management
- Book Writing: The Told Story
- Book Writing #2: The Rest Of The Story
- What is it like to write a technical book? at Xaprb
- OpenIDを手軽に発行、無償のRailsプラグインが登場:ITpro
- 2008 Design Trends
いやぁ、ひとしきり見入ってしまった。
2008年は何がホットなのか?
Pencil sketches, handwritten notes, card stocks, watercolor effects, collage art, script fonts, grungy and splatter ink backgrounds (glossy gradients are not "in" this year)
1年前に著者が編集した以下のサイトたちからのトレンドを引き継き、さらによくなってきているとのこと。
- 33 Artistic Sites
もう一つの傾向として、ビンテージ、レトロものがあると。著者はあまり好きではないようだが、
今年初めに投稿された以下の記事もある。
- Vintage Web Design
- 完全無料の次世代グループウェア Thetis ワークフロー・勤怠管理・アンケートまで
ちょっと試してみよう。
Rails ではモデルの関連を定義でき、SQL を意識せずに関連データの取得を行えるようになっている。
class Entry < ActiveRecord::Base belongs_to :author has_many :comments, :order => 'created_at DESC' endというモデルがあった場合、データの出力は以下のよう行える。
for entry in Entry.find(:all)
puts "Entry Title: #{entry.title}"
puts "Written by: #{entry.author.name}"
puts "Last Comment at: #{entry.comments.first.created_at}"
end
さて、この時 SQL が何本走るか?
for entry in Entry.find(:all, :include => :author)
puts "Entry Title: #{entry.title}"
puts "Written by: #{entry.author.name}"
puts "Last Comment at: #{entry.comments.first.created_at}"
end
上記は Authors テーブルを結合している。
for entry in Entry.find(:all, :include => [:author, :comments])
puts "Entry Title: #{entry.title}"
puts "Written by: #{entry.author.name}"
puts "Last Comment at: #{entry.comments.first.created_at}"
end
トラックバックの組み込みのところで少し時間をくってまった。引き続き。
■ タグ・タグクラウド機能
Rails プラグインでレポジトリに
- http://svn.viney.net.nz/things/rails/plugins/
を追加し、
- acts_as_taggable_on_steroids プラグイン
をインストールして使う。
generator で acts_as_taggable_migration を実施する。
migrate を実施することでタグ関連のテーブルが作成される。
モデル(Entry)に acts_as_taggable の呼び出しを追加し、View の変更もしておく。
タグクラウド用のヘルパーを ApplicationHelper に追加する。
サイドバーにもろもろ表示を行うため、その表示ネタを EntriesController で
とってきておく。
EntriesController#index の Entry.find にタグ用の条件を追加し、
layouts/entries.html.erb にサイドバーの表示部分を追加する。
このタグ・タグクラウド機能の追加で一通りのブログの機能の実装を終える。
いやぁ、たいしたもんだね。
テスト用に必要になったのでざっくりと。
require 'uri'
require 'cgi'
require 'net/http'
def create_form_encoding_str(field_hash)
field_hash.collect { |k, v|
k = k.to_s if k.respond_to? :to_s
"#{CGI.escape(k)}=#{CGI.escape(v)}"
}.join('&')
end
def print_response(res)
puts "---- Response code ----"
puts res.code
puts res.message
puts "---- Response HTTP Header -----"
res.each do |k, v|
puts("#{k} => #{v}")
end
puts "---- Response Body -----"
puts res.body
end
def main(target_uri, send_body_hash)
uri = URI.parse(target_uri)
res = nil
send_body = create_form_encoding_str(send_body_hash)
Net::HTTP.start(uri.host, uri.port) do |http|
res = http.post(uri.path, send_body)
end
print_response(res)
end
if __FILE__ == $0
target_uri = 'http://localhost:3000/entries/2/trackbacks.xml'
send_body_hash = {:title => 'track back test1',
:blog_name => 'MyBlog',
:excerpt => '引用です。',
:url => 'http://wwww.example.com'}
main(target_uri, send_body_hash)
end
URI エンコードを行う場合は、
- URI::escape
- CGI::escape
どちらを使うのが正解?
「RESTful Web サービス」では、
- URI に含めるものは URI エンコード(URI::escape)
- 表現に含まれる(HTTP のエンティティボディ)ものは、
フォームエンコード(CGI::escape)
を推奨している。
ちゃんと中身見て判断しないといけないが、
やっちゃいけないこととしては、送信するデータをまとめてエンコーディングすると
面倒くさいところで嵌まる・・・というところだろうか・・・
>> require 'uri'
=> true
>> query_hash = {'q' => '日本代表', 'hl' => 'ja'}
=> {"hl"=>"ja", "q"=>"\346\227\245\346\234\254\344\273\243\350\241\250"}
>> query_string = query_hash.collect { |k, v|
?> "#{URI.escape(k)}=#{URI.escape(v)}" }.join('&')
=> "hl=ja&q=%E6%97%A5%E6%9C%AC%E4%BB%A3%E8%A1%A8"
model のテストを実施しようとしたのだが、table がいないよ!と怒られる。
そうだよね、Dev 環境で動作検証をしていたのだが、テスト用の DB なんて意識して作っていない。
さてどうすれば生成できるのか。
config/database.yml に書かれているように、Rails の開発では、
development、test、production の3つの環境を使う。
ずっと development の環境に向けて作業をしていたので、
development 環境には既に今試したい環境はある。
なので、そこからスキーマを移す。
$ rake db:test:prepareで、テストを実行。
$ rake db:test:unitこの場合は、全ての test/unit ディレクトリにある全てのテストが実行される。
Leonard Richardson が公開している rest-open-uri を使う。
Ruby gem でインストールできる。
$ sudo gem install rest-open-uri
■ トラックバック機能
基本はコメントの機能の追加と同じなので新しいことはないが、よい復習になった。
ただ、実際テストを行ってみるといろいろと出てきた。
★ CSRF 対策にひっかかる
- ActionController::InvalidAuthenticityToken
実装したトラックバックの機能をテストしたのだが、
HTTP エラー 422 が返り、ActionController::InvalidAuthenticityToken の
Exception が投げられる。はて?これは何なのか?
CSRF 対策のための対応が Rails 2系からはデフォルトで入っているようで、
それが効いてしまっているためのようだ。
- ActionController::RequestForgeryProtection
scaffold を使って作成した application.rb の中に、
# See ActionController::RequestForgeryProtection for details # Uncomment the :secret if you're not using the cookie session store protect_from_forgery # :secret => 'fed08971b6cf9aa58db38c08f3ccb5db'が埋め込まれている。
protect_from_forgery :except => [:create]まじめにやるときはもう少し考えよう。今回はこれで。
render :xml => '<response><error>0</error></response>',
:status => :created, :location => @trackback
となっていたのだが、:location => @trackback の指定では、リソースマッピングがNoMethodError in TrackbacksController#create
undefined method `trackback_url' for #<TrackbacksController:0x3415098>
との表示がされる。
リソースマッピング(routes.rb)には、
map.resources :entries, :has_many => [:comments, :trackbacks]と書いたので、ここは、
render :xml => '<response><error>0</error></response>',
:status => :created, :location => [@entry, @trackback]
が正しい(はず)。location => http://localhost:3000/entries/2/trackbacks/3
大きく3パターン。
(1) テーブル A の1つの行がテーブル B の 0 または 1 つの行に関連付けられる (1:1)
class Invoice < ActiveRecord::Base belongs_to :order end class Order < ActiveRecord::Base has_one :invoice end
class LineItem < ActiveRecord::Base belongs_to :order end class Order < ActiveRecord::base has_many :line_items end
class Category < ActiveRecord::Base has_and_belongs_to_many :products end class Product < ActiveRecord::Base has_and_belongs_to_many :categories end
- MacOSX 10.4 (Tiger) にPassenger (mod_rails for Apache) をインストール RAILS PRESS
■ コメント機能
scaffold を使って Comment モデル、コントローラ、ビューを作成する。
attributes で指定した entry:references という指定だが、
マイグレーションファイル上は、
def self.up
create_table :comments do |t|
t.string :name
...
t.referencers :entry
t.timestamps
end
end
t.references :entry という指定になる。
format.html { render :template => "entries/show" }
と指定するよう書かれていたが、確かに飛び先はそうかもしれないが、
format.html { render :template => "entries/show", :layout => "layouts/entries" }

あくまでメディア側への提案
広く深くえぐってます
すべてのコンテンツは対立関係にある
マスメディア関係者は読んだ方がよい
テレビ局への提案書に過ぎない。- Nome do Jogo Artigo New Free Book: “Ruby on Rails 2.1 - What’s new”
via Riding Rails: Free Rails 2.1 Book
- はじめてのAmazon EC2&S3 〜これからの新サービスの公開の形〜:第1回 仮想マシンレンタルサービスAmazon EC2、大容量ストレージサービスAmazon S3を使ってみよう|gihyo.jp … 技術評論社
WEB+DB PRESS Vol.43 の記事ですね。
以下、Emacs のキーバインドになっている。
- コード補完
Ctl + space
- ヘルプの表示
Ctl + Shift + space
- ファイルを実行
Shift + F6
- ヒント(Quick Fix)を表示 + 実行
Alt + Enter
- ビューとコントローラの切り替え
Shift + コマンド + A
- NetBeans IDE 6.0 Ruby Documentation
- NetBeans TV
にあるデモは参考になる。
■ 画像のアップロード
- FileColumn プラグインを使用する
ファイル名をテーブルに保持し、実体は、public ディレクトリ配下のモデル名ディレクトリ
配下にモデルの id と関連付けて保存される。
- テーブルにカラムを追加する
テーブルにファイル名を追加する必要があるため。
- generate migration の add_column を使う。
- フォームに multipart であることを指定する。
本の中では表示と新規のファイルアップロードのみの記載しかなかったので、
編集時の変更も追記しておく。
変更は partial で使っている「_form.htm.erb」に image ファイル名が指定されている
場合には画像も表示するようにしておく。
表示の際に「_entry.html.erb」追加したソースとほぼ同じ。
form_for のブロックの中に、以下を追加。
<% content_tag :p do %>
<%= f.label(:edit_image, '投稿されている画像') %>
<%= image_tag(url_for_file_column(:entry, :image)) %>
<% end if @entry.image %>
$ wget http://localhost:3000/entries- XML の表現を要求
$ wget --header='Accept: application/xml' http://localhost:3000/entries- Atom 表現を要求
$ wget --header='Accept: application/atom+xml' http://localhost:3000/entries
- TechCrunch Japanese アーカイブ スクリーンショットで辿る、デビュー前のGmailの進化
| HTTP メソッド | 操作説明 | Rails Controller のメソッド |
| get | 読み出し | show |
| post | 作成 | create |
| put | 更新 | update |
| delete | 削除 | destory |
クライアントは、新しいリソースの URI をクライアントが決定する場合に PUT を使用し、
新しいリソースの URI をサーが決定する場合に POST を使用する。
「RESTful Web サービス」より。
試している環境。
$ ruby -v ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-darwin8.11.1] $ rails -v Rails 2.1.0 $ gem -v 1.1.1
NetBeans の v6.1 が出ている。
- ja: NetBeans 日本語サイト
- NetBeans 6.1 日本語版正式リリース - Masaki Katakai's Weblog
- Open Tech Press 「NetBeans IDE 6.1」日本語対応マルチリンガル版リリース
起動時間短縮やメモリ消費量削減などでパフォーマンスも向上した。
うーん、なぜマークが割り当てられていないのか・・・
そもそもできないのかな・・・
取りあえずストレスが減るようにキーバインドを Emacs キーバインドに近づけておく。
・その他>挿入ポイントを前方に [Ctl + F]
・その他>挿入ポイントを後方に [Ctl + B]
# なぜ Ctl + N, Ctl + P は割り当てられているのにこれが割り当てられていないのだ?
悪くはないのだが、Mac には、Spotlight がいるし、インデックス作成をやっている間に
奪われているリソースによくイライラさせられてしまったため。。
- Mac OS 向け Google デスクトップをアンインストールするにはどうすればよいですか。
環境が面倒臭いことになってきたので、今後パッケージ管理は MacPorts
で統一することにする。
まずはソースからインストールしていた Ruby と RubyGems を MacPorts で入れておく。
$ sudo port install rb-rubygems ---> Fetching ruby ---> Verifying checksum(s) for ruby ---> Extracting ruby ---> Applying patches to ruby ---> Configuring ruby ---> Building ruby with target all ---> Staging ruby into destroot ---> Installing ruby 1.8.6-p114_0+thread_hooks ---> Activating ruby 1.8.6-p114_0+thread_hooks ---> Cleaning ruby ---> Fetching rb-rubygems ---> Verifying checksum(s) for rb-rubygems ---> Extracting rb-rubygems ---> Configuring rb-rubygems ---> Building rb-rubygems with target all ---> Staging rb-rubygems into destroot ---> Installing rb-rubygems 1.1.1_0 ---> Activating rb-rubygems 1.1.1_0 ---> Cleaning rb-rubygems
$ which ruby /opt/local/bin/ruby $ ruby -v ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-darwin8.11.1] $ which gem /opt/local/bin/gem $ gem -v 1.1.1
$ gem query *** LOCAL GEMS *** $ sudo gem update --system # update $ sudo gem install rails # rails $ rails -v Rails 2.1.0 $ sudo gem install sqlite3-ruby # SQLite Driver $ sudo gem install rmagick # ImageMagick $ sudo gem install mongrel # Mongrel Server
$ sudo gem install wirble
嵌まる。。
環境
$ which ruby /usr/local/bin/ruby $ ruby -v ruby 1.8.5 (2006-08-25) [i686-darwin8.8.3] $ which gem /usr/local/bin/gem $ gem -v 1.1.1 $ which rails /usr/local/bin/rails $ rails -v Rails 2.1.0 $ which sqlite3 /opt/local/bin/sqlite3 $ sqlite3 --version 3.5.9
$ rake db:migrate (in /Users/taka/NetBeansProjects/locus) dyld: NSLinkModule() error dyld: Symbol not found: _RSTRING_PTR Referenced from: /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3_api.bundle Expected in: flat namespace Trace/BPT trap
dyld: NSLinkModule() errorなので、ダイナミックライブラリの問題なのでしょう。
Referenced from: /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3_api.bundleから参照されているライブラリは /usr/lib 配下になっていて、
MacPorts で Ruby の新しいバージョンのものを入れてた。
当然付属の irb の動きもかわる。
環境的に元々の Ruby のバージョンを使う必要があったため、
一旦 MacPorts の Ruby は削除した。
さてここで。
$ which irb /usr/local/bin/irb $ irb -bash: /opt/local/bin/irb: No such file or directory $ /usr/local/bin/irb >> # OKあれ? which で正しくパスが出ているのに、直接叩いた時は
$ sudo port install ImageMagick
$ sudo gem install rmagick
- インストールされているものを調べる
$ port installed
$ port outdated
$ sudo upgrade installed
$ sudo upgrade outdatedとういう使い方もできる。
気が向いた時にたまにしておく。
- MacPorts 本体の更新、カタログの更新
$ sudo port -d selfupdate- MacPorts でインストールされているパッケージの更新
$ sudo port upgrade installed- RubyGems 本体の更新
$ sudo gem update --system- RubyGems でインストールされている Ruby 関連パッケージを最新に
$ sudo gem update
- バッファの環境下で式を評価する
M-:
■ Emacs List モードで
- 関数名、変数名の補完
M-TAB
- 式の評価
評価する式の最後にカーソルを移動し、C-x C-e
- リージョン、バッファにある式を一気に評価する
M-x eval-region
M-x eval-current-buffer
引き続き[2008-05-22] に購入した RESTful Web サービスを読んでいる。
7章 サービスの実装まで読み切る。
「7.11.2 標準化による記述」にある
すべてのリソース指向の RESTful Web サービスは、URI を使用してリソー
スを特定し、HTTP の 統一インターフェイスに基づいて操作を表現する。
に、この本で言いたいことが集約されている気がする。
Web サービスのアーキテクチャーでもちゃんとオブジェクト指向しようよ!
ということなんだと解釈。
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2009-01-02 23:56