- ランプの中身(Ruby on Railsのシステム開発)
- ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。
< [Rails 2.0]起動時のファイルの... | メイン | Passenger (mod_rails... >
-
- 2008.02.26
Rails導入でRuby標準クラスへ追加される関数達(String編)
こんにちは。
KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。
Ruby on Railsでは、Webフレームワーク機能以外にも、Ruby標準のクラスなどに関数の追加なども行われます。これらの関数は便利な割にそんなに知られていない気がするので、紹介してみようかな~と思います。
at
at(位置:integer)
文字列の指定した位置の文字を返します
"Hello".at(0) # => "H"
"Hello".at(4) # => "o"
"Hello".at(10) # => nil
"Hello".at(-1) # => "o" 最後から1文字
"Hello".at(-4) # => "e"
"Hello".at(-10) # => nil
first
first(長さ:integer 初期値:1)文字列の先頭から指定した長さの文字列を取得します
"Hello".first # => "H"
"Hello".first(3) # => "Hel"
"Hello".first(10) # => "Hello"
"Hello".first(0) # => "Hello"
"Hello".first(-3) # => "He" 最後から4文字目から先頭
"Hello".first(-10) # => ""
from
from(位置:integer)文字列の指定した位置から最後までの文字列を取得します
"Hello".from(1) # => "ello"
"Hello".from(3) # => "lo"
"Hello".from(10) # => ""
"Hello".from(0) # => "Hello"
"Hello".from(-2) # => "lo" 最後から2文字目から最後
"Hello".from(-10) # => ""
last
last文字列の最後から指定した長さの文字列を取得します
"Hello".last(1) # => "o"
"Hello".last(3) # => "llo"
"Hello".last(10) # => "Hello"
"Hello".last(0) # => "Hello"
"Hello".last(-2) # => "llo" 先頭から2文字目から最後
"Hello".last(-10) # => ""
to
to文字列の先頭から指定した位置までの文字列を取得します
"Hello".to(1) # => "He"
"Hello".to(3) # => "Hell"
"Hello".to(10) # => "Hello"
"Hello".to(0) # => "H"
"Hello".to(-2) # => "Hell" 最後から2文字目まで
"Hello".to(-10) # => ""
starts_with?
starts_with?文字列が指定した文字列で始まるかを判定します
"Hello".starts_with?("H") # => true
"Hello".starts_with?("Hel") # => true
"Hello".starts_with?("Helo") # => false
"Hello".starts_with?("ello") # => false
ends_with?
ends_with?文字列が指定した文字列で終わるかを判定します
"Hello".ends_with?("o") # => true
"Hello".ends_with?("ello") # => true
"Hello".ends_with?("Hel") # => false
"Hello".ends_with?("oilo") # => false
camelize
camelize(先頭の文字をどうするか:シンボル(:lower小文字|:upper大文字 初期値:upper)パス形式からRubyのクラス名にする。/は::に変換されます。
"active_record".camelize #=> "ActiveRecord"
"active_record".camelize(:lower) #=> "activeRecord"
"active_record/errors".camelize #=> "ActiveRecord::Errors"
"active_record/errors".camelize(:lower) #=> "activeRecord::Errors"
classify
classifyテーブル名をRubyのクラス名にする
"egg_and_hams".classify #=> "EggAndHam"
"post".classify #=> "Post"
constantize
constantize文字列のオブジェクトが読み込まれていれば、そのオブジェクトを返す
"Module".constantize #=> Module
"Array".constantize #=> Array
dasherise
dasherize「_(アンダースコア)」を「-(ハイフン)」に置換する
"puni_puni" #=> "puni-puni"
demodulize
demodulizeモジュールの部分を取り除く
"ActiveRecord::CoreExtensions::String::Inflections".demodulize #=> "Inflections"
"Inflections".demodulize #=> "Inflections"
foreign_key
foreign_key(単語間をアンダースコアで区切るか:boolean 初期値:true)クラス名から外部キー名にする
"Message".foreign_key #=> "message_id"
"Message".foreign_key(false) #=> "messageid"
"Admin::Post".foreign_key #=> "post_id"
humanize
humanizeアンダースコアで区切られた文字をスペース区切りにし、最初の単語の先頭の文字を大文字にする。また、「_id」があれば削除する。そのことで、人が読みやすい形にする
"employee_salary" #=> "Employee salary"
"author_id" #=> "Author"
pluralize
pluralize複数形にする
"post".pluralize #=> "posts"
"octopus".pluralize #=> "octopi"
"sheep".pluralize #=> "sheep"
"words".pluralize #=> "words"
"the blue mailman".pluralize #=> "the blue mailmen"
"CamelOctopus".pluralize #=> "CamelOctopi"
singularize
singularize単数形にする
"posts".singularize #=> "post"
"octopi".singularize #=> "octopus"
"sheep".singluarize #=> "sheep"
"word".singluarize #=> "word"su
"the blue mailmen".singularize #=> "the blue mailman"
"CamelOctopi".singularize #=> "CamelOctopus"
tableize
tableizeクラス名をテーブル名にする
"RawScaledScorer".tableize #=> "raw_scaled_scorers"
"egg_and_ham".tableize #=> "egg_and_hams"
"fancyCategory".tableize #=> "fancy_categories"
titleize
titleize全ての単語の先頭の文字を大文字にする
"man from the boondocks".titleize #=> "Man From The Boondocks"
"x-men: the last stand".titleize #=> "X Men: The Last Stand"
underscore
underscorecamelizeの逆の処理をする。名前空間を含めたクラス名をパスにする
"ActiveRecord".underscore #=> "active_record"
"ActiveRecord::Errors".underscore #=> active_record/errors
まとめ
地味に役立ちそうなものが多い感じですかね。
camelizeとかはバンバン使えるようになりたいですよ。
トラックバック URL
この記事にコメントする
TOPICS
2008/06/25
「ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。
2008/05/30
「ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。
2008/05/07
「ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。
2008/04/24
「アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。
RoR最新ブログ一覧
カテゴリ
全体のRoR最新ブログ一覧
- Cybozuのスケジュールをmobileme経由でiPhone 3Gに取り込む
- 今週のRuby on Rails最新情報
- Rubyでどう書く?:RubyでWord文書を作成する
- タニタさんの「からだカルテ」を使ってみました
- iPhoneを確保しました
- Edge Railsの最新情報
- Rubyのセキュリティ脆弱性
- mysqlでレコードの中身を一括置換する方法
- 同じappでDBを使い分ける
- Rubyでどう書く?:重複したRSSをまとめる
- TABLEに直接データを入れる便利な方法
- 社内SNSをiPhoneで快適に見るためのCSSを書いてみた
- phpmyadminをセキュアにアクセスする方法
- Rubyプログラムの組み方から、Exeファイルの作成まで
- Ruby、Railsインストール for MacOSX
- will_paginageを使ってみた
- dmgファイルの作り方
- PHP携帯電話の機種情報取得
- Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する
- リファラでアクセス制限をしてみた。
- 奇妙な演算子
- RJSを用いて、日付プルダウンメニューを書き換える (2
- railsの実行モードの設定 RAILS_ENV
- postgresでのユーザ権限付与(psql, grant)
- ドロップダウンに簡単にオートコンプリート機能を追加する方法
- Vimの自動補完
- IE6 以前で float に指定した margin が 2 倍になる現象を解消する
- サーバ監視ソフトウェア「ganglia」を使ってみる
- 監視ツールcactiについて
- Rubyでどう書く?:RubyでPDF履歴書を作成する
- グラフを作ってみるか!?
- clearfixでfloat解除
- SELinux無効にしてみる
- Rubyのソースコードから HTML Helpを生成してみよう!
- IEでダイジェスト認証をかけるとエラーになった。
- muninのインストール 〜監視ツールって〜
- Rubyでどう書く?:連続した数列を範囲形式にまとめたい
- RJSを用いて、日付プルダウンメニューを書き換える
- Passenger (mod_rails for apache)での色んな設定値について調べてみた
- docomo の罠
- ローカルで動画変換をする方法
- MacOSにpostgreSQL 8.3をインストール
- Postgres8_3⇔8_1の性能比較してみました
- rake db:migrate すると undefined method `last' for {}:Hash と出る
- ケータイWebサイトに携わっている方へ
- MySQL最大バッファサイズの設定
- railsのand/orを使った機能
- Railsライクなフレームワーク「CakePHP」②
- エラー表示で意図しない改行を解消する−fieldWithErrors、ActionView::Base、field_error_proc
- [mysqlのベンチマーク]MyBenchの設定
- Rubyのコマンドライン引数と環境変数について(初心者向け)
- Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する
- 簡単&便利 Capistranoのススメ (導入編)
- Rails的コメントアウト
- 使えるvalidate一覧
- せっかくなので、Thin を使って実践
- Xenを用いてCentOS上に仮想CentOSを2つインストールする
- aptanaでrailsをデバッグ実行する
- empty?とblank?の違いって?
- ローカルでコマンドを打つとアスタリスクで囲まれたエラーが出る
- rubyの便利ツールirbをカスタマイズしてみた
- 実行モード "environment"設定の基本
- RadRails(Aptana)のショートカット
- JRubyを触ってみた
- mongrelとの戦い〜503エラー?mongrelが死んだってことさ…
- sshでrootログインの禁止
- database.ymlの設定方法
- Railsライクなフレームワーク「CakePHP」①
- Rails導入でRuby標準クラスへ追加される関数達(String編)
- Rubyのマニュアルを手軽に参照する方法
- railsで画像などファイルをアップロードする方法
- 遠隔地のチョロQを操縦する方法 with JavaScript, AJAX, Rails, Gainer, Webカメラ, and USTREAM.TV
- Ruby on Railsで作られたradMineのカスタマイズ1 ~インストール編~
- MacBook AirのレビューとLet's noteとの比較
- Rails プラグイン : CSS Graphsの使い方(そしてちょっとだけ改造)
- Railsの開発でscreenを使う理由
- ActiveRecordのconditionsを綺麗に書くTips2つ
- [Rails 2.0]起動時のファイルの読み込みの順番がわかった!
- RailsのActionMailer(Tmail)でドットの連続などのRFC違反している携帯メールアドレスに対応する
- スパムを消して消して、もう消しまくって こうなりました。
- Ruby on Railsでacts_as_paranoidを使い倒す
- fastladderをrailroadで図を作ってみる。
- [書評] 他言語開発経験者でも、初心者でも、本屋で「チラ見」して確認してみよう
- ヘルパーメソッド
- Ruby標準csv遅い
- Linux2.6系の脆弱性でroot権限奪ってみた
- railsで開発したダイエットサイトとそのソースコード
- fastladderを試してみました ~rails2.0~
- HeartBeatの設定
- Railsの手動インストール
- Railsで「Lost connection to MySQL server during query」に遭遇した場合の対策
- RadiantCMSのインストール(2)
- Linuxとかのbashで使えるショートカットキーをまとめた一覧
- 長い文字列をカットして表示するプログラム
- SLこまんどの設定
- Rails プラグイン : Rails Widgets >Tabnavの使い方
- Scaffoldはどこからくるの? 後編
- ローカルメールサーバーでRailsでのメール受信のテストを便利に
- HTMLエスケープ
- aptanaのインストールと使い方について
- railroadを用いたER図作成
- RailsでAmazon APIを利用する
- ちょっとしたスペルミスなどで、時間を無駄にした経験があるなら ( カラー表示で編集しやすく )
- ちょー入門、Webサーバ構築で知ってて損をしない用語(2)
- Ruby on Rails ってなになに?
- 最近!流行りの、「Ruby」 知ってますか?
- RubyGems って単語よく出てきますよね?
- CentOS5とaptanaを使ったWindows開発環境 1
- gemコマンドの紹介
- ちょー入門、Webサーバ構築で知ってて損をしない用語(1)
- こんな人がこのブログを書いて・・・
- RadiantCMSのインストール(1)
- RubyでActiveRecordを使わないでDBに接続する方法
- Railsのキャッシュ機能を用いて動的ページを静的ページにする方法を紹介
- Rails 2.0のセキュリティ面の変更点
- DRBDのインストール
- Rails プラグイン : ColumnCommentsの使い方
- Scaffoldはどこからくるの? 前編
- RMagickの使い方
- Ruby on Rails インストール for Windows
プロフィール
- よっぴ
-
33 歳
- yoppiの中身は空っぽです。Rubyistです。Railsで開発してます。



