サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
rubist.blog77.fc2.com
Rubyで使われる記号の意味より 「!」はメソッド名の一部です。慣用的に、同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)で使われます。 ですって。「!」ビックリを加えることで、メソッドの動作が直接変わる、という訳ではないのですね。 見た目でわかりやすいから、便宜的に「!」ビックリを加えているようです。 ちなみにメソッド名の後にある「?」はてなマーク・クエスチョンマークとはもどうぞ。 ちょっと上の例に出ている tr と tr! の違いを調べてみました。 どれくらい tr! が「破壊的」なのか楽しみです。 hensu = '1234' p hensu # => "1234" p hensu.tr('1-3', 'a-c') # => "abc4" p hensu # => "1234" ※注:自分自身は書き換えられない p hensu.tr!('1
2024.07 « - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 » 2024.09
rake コマンドは、ちょこちょこと使いますが、一体全体 rake って何さま?って思ったときに、rake コマンドで出来ることの一覧があれば、なんとか雰囲気はつかめるんじゃないか、と思いまして、rake で出来ること一覧がないかな、と探しました。 そしたら、いいオプションがあるではないですか! # rake --tasks で、rake で出来ることの一覧が表示されるではないですか。 せっかくなので、私の超絶翻訳をさせていただきます。今回、難しいので、適当度100%です!ごめんなさい!! rake db:fixtures:load # 現在の環境のDBに、fixture(データ行のこと?)をロードする。 fixture は以下のように指定する FIXTURES=x,y rake db:migrate # Migrate the database through scripts in db
rubyのメソッド名をコールする際に、メソッド名の前にピリオド(.)を付けるのか、コロンコロン(::)を付けるのか、訳が分からなかったので実験をしてみました( @ ruby1.8.7 ) 結論。 メソッド名の1文字目が小文字の場合はピリオドとコロンコロンのどちらでもよい。 メソッド名の1文字目が大文字の場合は複雑なルール。基本ピリオドにしとけ。そうするとコロンコロンのクラススコープの定数呼び出しから区別し易い。 以下実験結果をほとんど解説なしで書いてみます。 # メソッド class Nikuman def my_name # その1 #def self.my_name # その2 #def Nikuman.my_name # その3 #def Nikuman::my_name # その4 puts "肉まん" end end niku = Nikuman.new # クラススコープの変数
ひらがな1文字って言ったってバイトに分解してみれば、そりゃあいろいろ取り出せまっせ。 ひらがなの「あ」をバイト列を使って表示する方法が色々あるので、載せておきます。 # 以下の例は UTF-8 です # その壱:ノーマル puts "あ" # その弐:符号あり10進数 puts [-29, -127, -126].pack("c*") # その参:符号なし10進数 puts [227, 129, 130].pack("C*") # その四:8進数 puts "\343\201\202" # その伍,その六:16進数 puts ["e38182"].pack("H*") puts "\xe3\x81\x82" # ちなみにEUC-JP puts "\xa4\xa2" # ちなみにShift_JIS puts "\x82\xa0"
2024.07 « - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 » 2024.09 MATZさんの本の読書感想文は、あまり一般の人が興味がなさそうだったので、いっそのことやめて、読書中に気に留めたことについての記事を書くことにしました。 今日は、カーソルを自由自在に動かせるような Ruby の記述があったので、実験してみました。 つまるところ以下のように書けば、カーソルが動くらしいのです。スゴイ。 # 上に動かす printf "\e[nA" STDOUT.flush # 下に動かす printf "\e[nB" STDOUT.flush # 右に動かす printf "\e[nC" STDOUT.flush # 左に動かす printf "\e[nD
Perlだと、特に宣言なしに、 $a{'size'}{'upperbody'}{'chest'} = 100; とか出来るのに Ruby だといちいち Hash.new() など宣言しなくてはならず不便です! しかし以下のおまじないを唱えると、ハッシュのハッシュのハッシュとかを一気に宣言できちゃって便利ったらありゃしません。 my_hash = Hash.new{|h,k| h[k]=Hash.new(&h.default_proc)} my_hash[:size][:upperbody][:chest] = 100 my_hash[:size][:egg] = 'XL' my_hash => {:size=>{:upperbody=>{:chest=>100}, :egg=>"XL"}} というのが使い方で、とっても便利ですね、いろんな場面で使えそうです! 以下は、なんでーそうなるの?と
2024.07 « - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 » 2024.09 自分のプロジェクトで使う gem はこれですので、すべからくインストールすべし!ということを指定できるようになりました。 まあ、gem 依存については私も大層な知識がないのでorz、頼みの rails-2.1.0/CHANGELOG ファイルを見ながらこの記事を書いてみようかなと思います。 config/environment.rb Rails::Initializer.run do |config| # bj という名前の gem パッケージが必要 config.gem "bj" # hpricot という名前で、バージョンが0.6でリポジトリが http://cod
変数に入っている文字列とか、文字列そのものを画面に表示するときには、 <%= "文字列" %> を使いますが、その直後に改行を入れて後に続けると、つまり、 <%= "文字列" %> abc をすると、ブラウザでアクセスした時の、HTMLソースは、"文字列"の次に改行が入ります。(当たり前?) その改行を入らなくするために、ハイフンパーセントを使いましょう。 <%= "文字列" -%> abc そうすると、HTMLソースは、"文字列"の次に改行が入らないで、いきなり"abc"と続きます。 まあ、だからどうした?といわれそうですが、ERbをメール本文に埋め込むとかの用途があったら便利そう、と思ったもので・・・
ヒアドキュメントについてRuby リファレンスマニュアルを参考に書いています。 今回は発展編、ということで、あまり知らなくても支障はないんじゃないか的なものの紹介です。 インデントをしている部分で、2 番目の EOS を行頭に書くとソースが汚くなる場合は <<-を使って行頭にスペースを加えることができます。 if true my_str =<<-EOS abc def EOS end この場合、abc や def の行頭のスペースは文字列として my_str に代入されますが、2 番目の EOS の行頭のスペースは、文字列として my_str に代入されません。 my_str = " abc\n def\n" 識別子(ここでは EOS を使用) をバックスラッシュで囲むとコマンドを実行します。 my_str2 =<<`EOS` pwd ls cd ..;pwd EOS 複数のヒ
HTMLの中に、タグ文字やダブルクォーテーションやアンドを属性値の値とか、テキストとして書けないのは、いわゆるWeb制作者にとってみれば常識なのですが、ERbでは、それを h メソッドで行います。 通称、HTMLエンコードとか、HTMLエスケープとか呼ばれているのを聞いたことがありますよ。早速例を。 <%= h(myStr) %> てな感じにしてあげると、 & は、 & に " は、 " に <は、 < に >は、 > に 変換されます。 h の代わりに html_escape と書いても同じ効果です。 <%= html_escape(myStr) %> 個人的には h が好きなので h と書くように決めました。 ちなみに URL Encode の方法はこちらから。
掲示板を作ってみる・その1【何を作るの?】 掲示板を作ってみる・その2【モデルを作る パート1】 掲示板を作ってみる・その3【モデルを作る パート2】 掲示板を作ってみる・その4【ルーティングを考える】 掲示板を作ってみる・その5【コントローラを生成】 掲示板を作ってみる・その6【ヘルパを作る】 掲示板を作ってみる・その7【スレッド用コントローラを編集】 掲示板を作ってみる・その8【レス用コントローラを編集】 掲示板を作ってみる・その9【レイアウトファイルとスタイルシートファイルを作成】 掲示板を作ってみる・その10【スレッド用のビューファイルを作成】 掲示板を作ってみる・その11【レス用のビューファイルを作成】 掲示板を作ってみる・その12【ruby-gettext で日本語化】 たまにはフツーにアプリでも作ってみるか!という訳で某巨大掲示板っぽいものを作ってみることにしました。 最終的
モデルオブジェクトには、あらかじめコールバック関数が定義されています。 [model].create とか、[model].save とか、[model].destroy とかなどをしたときに、勝手に呼ばれるメソッドです。 例えば、 class User < ActiveRecord::Base validate_length_of :first_name, :maximum => 40 def before_validation # ここに validate_length_of をする前に行っておきたい処理を書ける end end と書いておくと、コントローラ辺りで、 u = User.find(123) u.first_name = 'ケロンパ' u.save とした時に、u.save の所で、first_name の validation が行われる前に、before_validat
Ruby で、オブジェクトを使っていて、ウーン、このオブジェクト、どういうメソッドが使えたんだっけ? という疑問にお手軽に答えてくれる、"methods"メソッド。 実際にやってみましょう。 num1 = 123 num1.methods という ruby ファイルを実行すると、 だらだらだらー、と92個もメソッドの一覧が表示されました。 まあ、これで一件落着なのですが、ちょっと見づらいので、並べ替えしましょう。 num1.methods.sort これで、見やすくなりました・・・って数が多すぎ? そういう贅沢なあなたには、絞り込みをおすすめします。 num1 は、Fixnum というクラスに属しているのですが、(num1.class で確かめてみよう!)Fixnum 固有のメソッドを調べてみましょう。 というのは、どういうことかというと、Fixnum は、親クラスが Integer なの
2024.02 « - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - - - » 2024.04
まったくrailsとは関係ないのですが、ハマって大変だったので全世界の人(日本語読める人限定)が同じようにハマらないようメモ。 ハードディスク間でデータを移行していて、VMWare5.5のデータも移していました。 で、移した先でVMWareのマシンを立ち上げようとすると以下のエラーが・・・ "なんとかかんとか.vmdk"を開くことができないか、または一部のスナップショットがこのディスクに従属しています。 理由: ファイルをロックできませんでした。 と表示されました orz もう相当あれこれやったのですが、結果的には以下のことが分かりました。 立ち上げようとしたマシンがクローンしたマシンだった。 クローン元の親マシンの絶対パスが、立ち上げようとしたマシンの設定ファイルに書かれていた。 クローン元の親マシンを、この絶対パスに置いていなかった。 具体的には、上記のエラーで表示された「なんとかかん
Special Thanks to a_matsudaさん ------------------------------------------- controller とかで、:conditions => { .... とか書いてソースコードがややぐちゃぐちゃになるのを見事にスッキリさせられるようになりました。 早速例を見てみましょう。model クラスに、named_scope の行を追加します。 class Person < ActiveRecord::Base named_scope :young, :conditions => {:age => 0..30} end これで、age が 0 ~ 30 の人をゲットできるようになります。 Person.young ↓ SELECT * FROM "people" WHERE ("people"."age" BETWEEN 0 AND
rails では、スタイルシートstylesheetタグを記述するのに、stylesheet_link_tag を使います。 stylesheet_link_tag は、最初の方のオプションがファイル名、最後の方のオプションが属性名と属性値になります。 ファイル名の拡張子は省略できます。その場合、.css が勝手にファイル名のおしりに付きます。 ファイル名のディレクトリ名は省略できます。その場合、/stylesheets/ が勝手にファイル名のあたまに付きます。 例を見ていきましょう! 1~3は、結局全部同じタグになります。 4だけ仲間はずれです。 1.ファイル名の拡張子もディレクトリ名も省略 <%= stylesheet_link_tag "honyarara" %> <link href="/stylesheets/honyarara.css?1175827191" rel="Styl
よくruby on rails のソースコードを見ていると出てくる、変数名の前についている @ (アットマーク)はいったいどういう意味なのでしょうか。 perlなら、配列、phpならエラーが起きても無視して次に進む、などという用途があったようなないようなですが、rubyではいかに? ということで他力本願的に調べてみたら、Wiki Booksに載っていました。 1. 小文字aからz か、_ で始まるのは、ローカル変数。 <例>num1 最初に宣言されたブロック内だけで有効のようです。ブロックとは { } で囲まれた間のことかな?beginからendもブロックというのかな? 2.@から始まるのは、インスタンス変数。 <例>@num1 3.@@から始まるのは、クラス変数。 <例>@@num1 4.$から始まるのは、グローバル変数。 <例>$num1 どこでも使えるグローバル変数です。これを多用す
小技を1つ。 request.env['HTTP_なんとか'] や request.headers['HTTP_なんとか'] などで取得していた環境変数を request.headers['なんとか'] で取得できるようになりました。 以下は全て同じ結果が返ります。 request.env['HTTP_USER_AGENT'] request.headers['HTTP_USER_AGENT'] request.headers['USER_AGENT'] request.headers['USER-AGENT'] request.headers['user_agent'] request.headers['user-agent'] request.headers['UsEr-AgEnT'] ところで、HTTP_ から始まらない環境変数は、そのまま大文字で書くしかありません。 request
Rails2.1で日時(timestamp)カラムをテーブルに作ってセーブするとUTC時間で記録されます。 それは、なぜかというと config/environment.rb ファイルに config.time_zone = 'UTC' と書いてあるからです。 今回は、この 'UTC' という値がミソになります。 これを 'Tokyo' に変えても、DB にはやっぱりUTC時間で記録されます。 じゃあ何が違うんですか?っていうと、モデルを使用して値を取ってくると設定したタイムゾーンでの値となります。 例えば、 UTC的に言うと 2008/06/08 02:52:00 だったら タイムゾーンがUTCの場合は Sun, 08 Jun 2008 02:52:00 UTC +00:00 を取得し、 タイムゾーンがTokyoの場合は Sun, 08 Jun 2008 11:52:00 JST +09
今回はちょいネタで。 migration ファイルで、テーブルを作成する場合に t.timestamps なんていう感じに指定すると、created_at カラムや updated_at カラムを追加してくれますが、 これを、後から追加したり削除したりするのに簡単な書き方があります。その名も add_timestamps と remove_timestamps 例えば、people テーブルにこいつらを追加し忘れたぁ、なんて時は、次のようなマイグレーションファイルなんていかが? class Timestamps < ActiveRecord::Migration def self.up add_timestamps :people # people テーブルに2カラム追加 end def self.down remove_timestamps :people # people テーブルから
自分のプロジェクトで使う gem はこれですので、すべからくインストールすべし!ということを指定できるようになりました。 まあ、gem 依存については私も大層な知識がないのでorz、頼みの rails-2.1.0/CHANGELOG ファイルを見ながらこの記事を書いてみようかなと思います。 config/environment.rb Rails::Initializer.run do |config| # bj という名前の gem パッケージが必要 config.gem "bj" # hpricot という名前で、バージョンが0.6でリポジトリが http://code.whytheluckystiff.net の gem パッケージが必要 config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluc
mysql のヤカラドモ集合! :limit に指定する数字により、:integer から変換される DB の型を smallint, int, bigint に自動的に設定してくれマツコDX. class CreateNumbers < ActiveRecord::Migration def self.up create_table :numbers do |t| t.integer :num # => int(11) t.integer :num1, :limit => 1 # => smallint(1) t.integer :num3, :limit => 3 # => smallint(3) t.integer :num4, :limit => 4 # => int(4) t.integer :num8, :limit => 8 # => int(8) t.integer :nu
Special Thanks to a_matsudaさん ------------------------------------------- モデルの値を変更した後、セーブする前に、実際に変更したかどーだかなどという情報を参照できます。 ↓いきなりまとめ changed? :モデルの値を変更したかどうか [カラム名]_changed? :モデルの指定したカラム名の値を変更したかどうか [カラム名]_was :モデルの指定したカラム名の変更前の値 [カラム名]_change :モデルの指定したカラム名の変更前と後の値 changed :モデルの変更したカラム名のリスト changes :モデルの変更したカラム名のリストと、変更前と後の値 [カラム名]_will_change! :モデルの指定したカラムの値を、= 以外の手段で変える場合に必要 例を使うと分かりやすいですね。 p = Pe
2024.02 « - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - - - - - » 2024.04 Special Thanks to a_matsudaさん ------------------------------------------- controller とかで、:conditions => { .... とか書いてソースコードがややぐちゃぐちゃになるのを見事にスッキリさせられるようになりました。 早速例を見てみましょう。model クラスに、named_scope の行を追加します。 class Person < ActiveRecord::Base named_scope :young, :conditions => {:
モデル model ファイルの中に、いろいろなバリデーションが書けるのですが、validates_uniqueness_of という種類もあります。 指定されたカラムについて、DB のテーブル中のデータに重複があれば、エラーにしてしまう、というマジカルなメソッドです。 例えば validates_presence_of :favorite_team なーんてやったりすると、このモデルのテーブルの favorite_team というカラムに、重複した値を insert したり、update したりしようとすると、エラーが出まして、insert したり、update したりできません。 なかなかスゴいエラーチェックだと思いました。 あと、応用編として、範囲を狭めることができます。 validates_presence_of :favorite_team, :scope => :login_na
前回、エラーチェックが恐ろしく簡単に出来るのは分かりましたが、もうちょっとカスタマイズできるみたいなので、やってみました。 まず、エラーメッセージのカスタマイズができるみたいです。 :message => "エラーメッセージ" でエラーメッセージがカスタマイズできるようです。 画面に表示されるエラーメッセージは、 カラム名 + "エラーメッセージ" なので、気を利かせてエラーメッセージをかかねば、ですね。 では、早速、bookモデルファイルを更にいじります。 # vi myFirst/app/models/book.rb class Book < ActiveRecord::Base validates_presence_of :title, :message => "should be entered!!!!" validates_length_of :title, :author, :
次のページ
このページを最初にブックマークしてみませんか?
『Ruby On Rails ピチカート街道』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く