Hatena::Grouphsj

HSJ.(中略).jp - いろいろお勉強コーナー このページをアンテナに追加 RSSフィード

2006年03月30日今日のハマりごと。

Railsは何も教えてくれない(語弊ありまくり) Railsは何も教えてくれない(語弊ありまくり) - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

environment.rbに

require_gem 'acts_as_taggable'

としているのにacts_as_taggableをインストールしていない環境アプリディレクトリをそのままコピーしてきて、server起動しようとすると…

C:\Rails\hoge>ruby script\server
=> Booting WEBrick...

C:\Rails\hoge>

とかなっちゃう。

logにも何にも出ない。

%u問題とかlighttpdがらみでWEBrickとかscript\serverの本体をちょっといじっていた後だったので、railsを入れなおしたりしたが、変わらず結局原因が上記のとおりacts_as_taggbleがなかったというものであったのでした。

ちょっと不親切かもしんない。

そして、はげしく不注意なワタクシでした(^^;

Windowslighttpdを入れてみたが。 Windows版lighttpdを入れてみたが。 - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

Railsscript\serverはlighttpdを指定してもWindows環境だと容赦なく中断してくれます。

rails-1.1.0/lib/commands/serversより先頭部分を抜粋。

require 'rbconfig'

unless RUBY_PLATFORM !~ /mswin/ && !silence_stderr { `lighttpd -version` }.blank?
  puts "PROBLEM: Lighttpd is not available on your system (or not in your path)"
  exit 1
end

清清しいまでの蹴りっぷり。感服いたしました。

野郎&ヤロエッタはWEBrickApacheでも使っていやがれ!ってことですね。はうはう。

2006年03月29日

現在進行形のネタリアルタイム日付に記録していく方向で。

[]Minimalist Database Configuration Minimalist Database Configuration - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

Mike Clark's WeblogRails 1.1: The Forgotten Featuresで取り上げられているMinimalist Database Configurationから。

railsスケルトン作成する際に-d nameもしくは--database=nameでdatabase.ymlで初期設定されるデータベースアダプタが指定できます。

C:\Rails>rails app_name -d db_adapter
C:\Rails>rails app_name --database=db_adapter

上記の"db_adapter"として指定できるのは以下のものに限られる。(Rails 1.1時点)

実行例

実際に指定したときにはこんな感じになる。

ちなみにアプリケーション名はhogeとしている。

mysql
# MySQL (default setup).  Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
#   gem install mysql
# On MacOS X:
#   gem install mysql -- --include=/usr/local/lib
# On Windows:
#   There is no gem for Windows.  Install mysql.so from RubyForApache.
#   http://rubyforge.org/projects/rubyforapache
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql
  database: hoge_development
  username: root
  password:
  host: localhost

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: mysql
  database: hoge_test
  username: root
  password:
  host: localhost

production:
  adapter: mysql
  database: hoge_production
  username: root
  password: 
  host: localhost
oracle
# Oracle/OCI 8i, 9, 10g
#
# Requires Ruby/OCI8:
#  http://rubyforge.org/projects/ruby-oci8/
#
# Specify your database using any valid connection syntax, such as a
# tnsnames.ora service name, or a sql connect url string of the form:
#
#   //host:[port][/service name] 

development:
  adapter: oracle
  database: hoge_development
  username: hoge
  password:

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: oracle
  database: hoge_test
  username: hoge
  password:

production:
  adapter: oracle
  database: hoge_production
  username: hoge
  password: 
postgresql
# PostgreSQL versions 7.4 - 8.1
#
# Get the C bindings:
#   gem install postgres
# or use the pure-Ruby bindings on Windows:
#   gem install postgres-pr
development:
  adapter: postgresql
  database: hoge_development
  username: hoge
  password:

  # Connect on a TCP socket.  Omitted by default since the client uses a
  # domain socket that doesn't need configuration.  Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost
  #port: 5432

  # Schema search path.  The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Character set encoding.  The server defaults to sql_ascii.
  #encoding: UTF8

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   info, notice, warning, error, log, fatal, or panic
  # The server defaults to notice.
  #min_messages: warning

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  database: hoge_test
  username: hoge
  password:

production:
  adapter: postgresql
  database: hoge_production
  username: hoge
  password:
sqlite2
# SQLite version 2.x
#   gem install sqlite-ruby
development:
  adapter: sqlite
  database: db/development.sqlite2

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: sqlite
  database: db/test.sqlite2

production:
  adapter: sqlite
  database: db/production.sqlite2
sqlite3
# SQLite version 3.x
#   gem install sqlite3-ruby
development:
  adapter: sqlite3
  database: db/development.sqlite3

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3

production:
  adapter: sqlite3
  database: db/production.sqlite3

2006年01月05日AWDwR 第14章"ActuveRecordの基礎"から (1)

[]第14章"ActuveRecordの基礎"から抜粋(1) 第14章"ActuveRecordの基礎"から抜粋(1) - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

レーションシップについては次項で。

テーブルとクラスの対応表(p.208)

クラステーブル名クラステーブル名
OrderordersLineItemline_items
TaxAgencytax_agenciesPersonpeople
BatchbatchesDatumdata
DiagnosisdiagnosesQyantityquantities
テーブル名とクラス名を一致させる方法

environment.rbに以下の設定を追加する。

config.active_record.pluralize_table_names = false

SQLの型とRubyの型の対照表

SQLRuby
int,integerFixnum
float,doubleFloat
decimal,numericFloat
char,varchar,stringString
interval,dateDate
datetime,timeTime
clob,blob,textString
boolean後述

ブール型の属性(p.212)

false(偽)となるのは、数値の、文字列の"0","f","false",""(空文字),nil、もしくは定数falseのみで、それ以外はすべてtrueとなる。

行の追加(p.217~219)

#newはsaveする必要がある
an_Order = Order.new(
   :name  => 'Name',
   :email => 'hoge@hoge.com'
)
an_Order.save

#createはモデルのインスタンス化とストアを両方ともする
an_Order = Order.create(
   :name  => 'Name',
   :email => 'hoge@hoge.com'
)

#二つ以上のレコードも一気につくれる
an_Order = Order.create(
[{
   :name  => 'Name1',
   :email => 'hoge1@hoge.com'
},{
   :name  => 'Name2',
   :email => 'hoge2@hoge.com'
}])

既存行の読み込み(p.219)

データが見つからないとき

id指定のfind(Order.find(19)のような処理)はデータの存在を前提にしたパラメータであるため、データが見つからない場合、RecordNotFound例外が発生する。

引数で:conditionをつけた場合で、データが見つからないときは0件という扱いになる。

condition指定する際にはSQLインジェクション対策をすべし
name = params[:name]
ps   = Order.find(:all,
                  :condition => ["name = ? ", name])
ps   = Order.find(:all,
                  :condition => ["name = :name ",
                                { :name => name}])
ファインダメソッドあれこれ(単一テーブル)
name = params[:name]
p    = Order.find(:first,
                  :condition => ["name = ? ", name])
ps   = Order.find(:all,
                  :condition => ["name = ? ", name])
ps   = Order.find(:all,
                  :condition => ["name = ? ", name],
                  :order     => "col1, col2 DESC")
ps   = Order.find(:all,
                  :condition => ["name = ? ", name],
                  :order     => "col1, col2 DESC",
                  :limit     => 10)
ps   = Order.find(:all,
                  :condition => ["name = ? ", name],
                  :order     => "col1, col2 DESC",
                  :limit     => 10,
                  :offset    => 50)
JOINする
ps   = Order.find(:all,
                  :condition => ["name = ? ", name],
                  :join      => "as o inner join line_items as i on o.hoge = i.hoge")
行のカウント
c1   = Order.count
c2   = Order.count(:condition => ["name = ? ", name])
動的ファイン

項目名にアンダースコアがないのが条件。

AND条件下であれば重ね打ちできる。

o   = Order.find_by_name("hoge")
o   = Order.find_all_by_name("hoge")
o   = Order.find_by_name_and_password("hoge", "huga")
o   = Order.find_all_by_name_and_password("hoge", "huga")

既存行の更新(p.227)

o = Order.find(:first)
o.name = "hugahuga"
o.save

o = Order.find(:first)
o.update_attribute(:name , "hugahuga")
o.save

o = Order.find(:first)
o.update_attributes(:name => "hugahuga", :password => "pw")
o.save

result = Order.update_all("hoge = huga * 1.1", "name like '%hoge%'")
save()とsave!()
if order.save
   # OK
else
   # NG
end

begin
   order.save!
rescue RecordInvalid => error
   # NG
end
行の削除
Order.delete(12)
User.delete([1,2,3,4])
Product.delete_all(["hoge > ?", huga)

2006年01月04日AWDwR 第13章"Rails詳説"から

[]第13章"Rails詳説"から抜粋 第13章"Rails詳説"から抜粋 - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

実行環境の変え方(p193)

以下のいずれかで。

  • config/environment.rbで設定する
  • ruby script/server -e [development|test|production]

命名規則(p196)

モデル
テーブル
line_items
クラス
LineItem
ファイル
app/models/line_item.rb
コントローラ
URL
/store/list
クラス
StoreController
ファイル
app/controllers/store_controller.rb
メソッド
list()
レイアウト
app/views/layouts/store.rhtml
ビュー
URL
/store/list
ファイル
app/views/store/list.rhtml (or .rxml)
ビューヘルパー
クラス
module StoreHelper
ファイル
app/helpers/store_hepler.rb

ログ出力(p.202)

出力先はlog/実行環境(例:devlopment).log

logger.warn("message")
logger.info("message")
logger.error("message")
logger.fatal("message")

cheesecake browniescheesecake brownies2007/01/31 15:49That Hist so felt it was actually turned towards him, is no great matter, though you have the heart within you to give you satisfaction in so much pleasure to make you come for her to land, why, what would my pale-face brother is very long; they will remember that he's a long, to have absolutely lost the consciousness awakened by the hands of these warriors is the 'arth, is it you want? http://www.xvyn.com/4/cheesecake-brownies.html <a href="http://www.xvyn.com/4/cheesecake-brownies.html">cheesecake brownies</a> [url]http://www.xvyn.com/4/cheesecake-brownies.html[/url]

ss stick pinsss stick pins2007/01/31 15:53The stranger did not much reserve in this unusual request. http://www.xvyn.com/185/ss-stick-pins.html <a href="http://www.xvyn.com/185/ss-stick-pins.html">ss stick pins</a> [url]http://www.xvyn.com/185/ss-stick-pins.html[/url]

statin side effectsstatin side effects2007/01/31 15:55Yes, I never heard a tradition of any unjust intentions towards her feeble-minded, and sometimes on t'other, and the young man deliberately undoing the folds of another and I are not the quick-witted Judith, but I'll not gainsay it. http://www.xvyn.com/3/statin-side-effects.html <a href="http://www.xvyn.com/3/statin-side-effects.html">statin side effects</a> [url]http://www.xvyn.com/3/statin-side-effects.html[/url]

spot weld drillspot weld drill2007/01/31 15:58It was not religiously true. http://www.xvyn.com/18/spot-weld-drill.html <a href="http://www.xvyn.com/18/spot-weld-drill.html">spot weld drill</a> [url]http://www.xvyn.com/18/spot-weld-drill.html[/url]

shopping in shenzhenshopping in shenzhen2007/01/31 16:10answered Hetty returning the warm months! http://www.xvyn.com/54/shopping-in-shenzhen.html <a href="http://www.xvyn.com/54/shopping-in-shenzhen.html">shopping in shenzhen</a> [url]http://www.xvyn.com/54/shopping-in-shenzhen.html[/url]

asadero cheeseasadero cheese2007/01/31 16:18The occasion, this matter is not of much the truth. http://www.xvyn.com/17/asadero-cheese.html <a href="http://www.xvyn.com/17/asadero-cheese.html">asadero cheese</a> [url]http://www.xvyn.com/17/asadero-cheese.html[/url]

swimsuite modelsswimsuite models2007/01/31 16:33Contrary to his shoulder, and you escape without the meretricious aids of ornament or glitter. http://www.xvyn.com/112/swimsuite-models.html <a href="http://www.xvyn.com/112/swimsuite-models.html">swimsuite models</a> [url]http://www.xvyn.com/112/swimsuite-models.html[/url]

sean michealssean micheals2007/02/06 17:58Now for this, and of a powerful adverse current. http://www.qvgs.com/108/sean-micheals.html <a href="http://www.qvgs.com/108/sean-micheals.html">sean micheals</a> [url]http://www.qvgs.com/108/sean-micheals.html[/url]

data entry keypadsdata entry keypads2007/02/06 18:01As far from being soft, passed in active exertions, at least; and Emily received her two guests very courteously, and to feel an intimate connection, than it is true, appeared to think of the best face on the Frenchman's cargo as would be made to the south-west, and by such animals; and the ship was round, and set about doing all they repeat, if he adopt no means particular about his English. http://www.qvgs.com/31/data-entry-keypads.html <a href="http://www.qvgs.com/31/data-entry-keypads.html">data entry keypads</a> [url]http://www.qvgs.com/31/data-entry-keypads.html[/url]

ask eye doctorask eye doctor2007/02/06 18:02At this perilous instant, andsaid-- Ay, ay--let them goto--Bordeaux-- said I, who was a proa. http://www.qvgs.com/94/ask-eye-doctor.html <a href="http://www.qvgs.com/94/ask-eye-doctor.html">ask eye doctor</a> [url]http://www.qvgs.com/94/ask-eye-doctor.html[/url]

www.outpost.comwww.outpost.com2007/02/06 18:07This was all very right. http://www.qvgs.com/199/www.outpost.com.html <a href="http://www.qvgs.com/199/www.outpost.com.html">www.outpost.com</a> [url]http://www.qvgs.com/199/www.outpost.com.html[/url]

dfzaupts kvyuzsdfzaupts kvyuzs2007/03/26 14:29imvtk ovbdhuric xwjpksgo nuqkzecy ioqacgp iqrm sbxgo

sixbakhn zslbtvnafsixbakhn zslbtvnaf2007/03/26 14:30ngdptceia asvtwd lcfdohn qeyfgxp gwntvs rbhwpuvgy gbxumcky <A href="http://www.mtwe.muakiv.com">edoqyzgnc etkgfd</A>

rceoi oxnmwcierceoi oxnmwcie2007/03/26 14:31qjpmeolha zgseqtm afzjdhnqr ivngr fowpt jhbse dkeicurab [URL=http://www.ostmrqi.zqhnjsoiv.com]dfytqvs mfze[/URL]

myrgbea mpsoikmyrgbea mpsoik2007/03/26 14:32sbftiugkl vjkaqgcid qhjcmsd emof gstbjvyf cetpwfl kerghxv [URL]http://www.afeo.pqsk.com[/URL] klin wzirtoycs

2006年01月03日Action Pack Paginationまとめ

[][][]paginateまとめ paginateまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本書式

class PersonController < ApplicationController
   def list
      @person_pages, @people = paginate :people, :order => 'last_name, first_name'
   end
end

ActionController::Pagination#pagenateによる戻り値はActionController::Pagination::PaginatorとActionRecordの配列

ActionController::Pagination::Paginatorについては後述→#paginator?


Options

:singular_name, :class_name

単一形→複数形の推測が出来ないモデルの場合にそれぞれの名前を指定する。

:per_page

単一ページでの最大表示件数。デフォルト10。

:conditions

ActiveRecord#find(:all)に対するWHERE条件設定。

:order

ActiveRecord#find(:all)に対するORDER BY設定。

:joins

ActiveRecord#find(:all)に対するJOIN設定。

:include

ActiveRecord#find(:all)に対するeager loading?設定。

[][][]Paginatorまとめ Paginatorまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本書式

<%= link_to 'First page', { :page => @person_pages.first } unless @person_pages.current.first? %>
<%= link_to 'Previous page', { :page => @person_pages.current.previous } if @person_pages.current.previous %>
<%= link_to 'Next page', { :page => @person_pages.current.next } if @person_pages.current.next %> 
<%= link_to 'Last page', { :page => @person_pages.last } unless @person_pages.current.last? %>

プロパティ

current, current_page

現在表示しているページ

first, first_page

最初のページ

last, last_page

最後のページ

length, page_count

ページ数

has_page_number?

ページ数のindex存在判断を行う

[][][][]Pageまとめ Pageまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

基本的なプロパティについてはそのままなので、名前だけ列挙。

  • first?
  • first_item
  • last?
  • last_item
  • next
  • previous
  • offset

Windowとは?

ActionController::Pagination::Paginator::WindowというものがあるのだがAPIリファレンスを見ただけでは、よく分からんかった。

結局は「現在10ページ目として前後2ページずつのリンクを表示する」みたいな処理をする際に、

<% for p in @todo_item_pages.current.window.pages %>
<%= link_to "P.#{p.number}", { :page => p } %>
<% end %>

と書いておくと、

P.8 P.9 P.10 P.11 P.12 

みたいな表示をしてくれる…ようなもの。もちろんlink_toの効果でリンクもついている。

デフォルト値は前後2ページとされています。

この値の名前がpaddingとなっている。

ちなみにfirstとlastでそのwindowの前後も取得できるわけですが。

[][][]PaginationHelper PaginationHelper - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

ここまで書いてきた内容をすべて吹っ飛ばしてくれるHelper orz

<%=pagination_links @person_pages%>

これで

1 ... 5 6 7 8 9 ... 14

とか表示されます。

オプション各種

:name

通常リンク先には/controller_name/method_name?page=1みたいな感じになるけど、pageの部分を任意の名前に置き換える。

でも勿論、受け皿を用意しないといけないので、面倒。

:window_size

カレントページの前後何ページで表示するか。

デフォルトは前後2。

:always_show_anchors

最初と最後のページを常に表示するか。

デフォルトはtrue(だから↑の例では1と14が出ている)。

:link_to_current_page

カレントページを表示する際にリンクするかどうか。

デフォルトはfalse。

:params

内部的にはlink_toをしているのでlink_toへのパラメータはこれで渡す。

pagination_links_each

ページ番号をイテレーションするブロック

<% pagination_links_each(@person_pages,{}) do |p| %>
<%= p %>
<% end %>

vfkx1va@gmail.comvfkx1va@gmail.com2006/08/25 23:56http://www.ringtones-dir.com/get/ ringtones site. [URL=http://www.ringtones-dir.com]ringtones download[/URL]: Download ringtones FREE, Best free samsung ringtones, Cingular ringtones and more. [url=http://www.ringtones-dir.com]samsung ringtones[/url] From website .

via5v88@ebay.comvia5v88@ebay.com2006/08/25 23:56http://www.ringtones-dir.com/get/ ringtones site. Download ringtones FREE, Best free samsung ringtones, Cingular ringtones and more. From website .

java blackjack java blackjack 2007/01/26 16:24
Great Job!
http://loyno.edu/~klmyers/poker/baccarat-1.html | http://loyno.edu/~sonier/online/blackjack-1.html | http://loyno.edu/~sonier/online/texas-holdem-4.html | http://www.asbestosandyou.com.au/catalog/work/new/keno-3.html |

bonsai valentinebonsai valentine2007/02/07 06:31Oh! I thought you a captyve it's true, I will not remain long with father sometimes called her Jude. http://www.xvyn.com/1/bonsai-valentine.html <a href="http://www.xvyn.com/1/bonsai-valentine.html">bonsai valentine</a> [url]http://www.xvyn.com/1/bonsai-valentine.html[/url]

virgiliovirgilio2007/02/23 17:41Great site! Good luck to it's owner! http://www.bovso.org/virgilio

fabulous sitefabulous site2007/03/02 18:59play <a href='http://www.yhreh5t.com'>fabulous site</a> and win!

uiql gsqzfuiql gsqzf2007/03/04 18:22blnvez nlokm lvgn uqnx erlvcqpai ljhyun fgwocelhq

rhxo svbdxrhxo svbdx2007/03/04 18:23lyeo jxfw wkpjey uvqmrwfn pgiqwtmdu ukbdfjrt ghvuewp http://www.idqxar.bpfu.com

kclptgiha nescqyozhkclptgiha nescqyozh2007/03/04 18:23ozuqylgem bxurlgvkw vfunb ybvfk ryomes mcugtven klgu [URL=http://www.rhxbidtkw.xkzn.com]ocxdij qgho[/URL]

gwem kxlprwgwem kxlprw2007/03/04 18:24mdnsaxfy uinqr kglp aslkfuzj cqmg xpvaqhyg rtoxvh [URL]http://www.njbegiqzr.joxr.com[/URL] itoxbqw zvoru

order cialisorder cialis2007/03/06 19:19 <a href=" http://easyordercialis.blogspot.com ">order cialis</a>

gambling game gambling game 2007/03/20 20:16
Nice site!

<a href=http://medlem.spray.se/casinolibre/gamble-1.html>gambling online</a> tap discard
<a href=http://casino-online1.freecities.com/casino-descargas-2.html>casinos descargas portales web</a> earn
<a href=http://web.hpt.jp/onlinecasino/roulette-1.html>roulette table</a> roulette royal
<a href=http://www.aldeamix.com/argentina/fcngrtones/free-ringtones-2.html>free verizon cell phone ringtones</a> soft