Kinopyo's Blog

I love this game.

アーカイブ

TextMate Bundler、NetBeansプラグインfor HAML

2010年07月30日

TextMateのBundlerはこちら:

http://github.com/handcrafted/handcrafted-haml-textmate-bundle

NetBeansのプラグインはこちらでダウンロード:

FaqPluginInstall – NetBeans Wiki

ほぼハイライト以外は何の機能もないです。

HAMLでRubyコードを書いても入力補完も、リファレンスも出ませんでした。

Rails: URLをid+slug”の形にカスタマイズ

2010年07月29日

slugはurlをより綺麗に表示するためのものです。例えばこの記事のpermanent urlは”rails-id-slug-name-in-url”にしています。英語世界になるんですが、これのようにurlを見ただけでそのurl先の内容が大体わかるようにするのがslugです。

この記事ではRailsで”id + post.title”のような形のURLを作る方法を紹介します。

方法

モデルクラス内にto_paramメソッドをオーバーライドするだけです。

例として

  class Person
    def to_param
      "#{id}-#{name.parameterize}"
    end
  end

  #controller
  @person = Person.find(1)
  # => #<Person id: 1, name: "Donald E. Knuth">

  #view
  <%= link_to(@person.name, person_path(@person)) %>
  # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>

上記のようにmodelクラスを修正するだけで、他の影響はないです。URL: ‘/person/1-kinopyo’と’/person/1′はどっちでも使えます。

parameterizeはRailsのビルトインのメソッドでurlに使う文字列に変換してくれるんです。しかし日本語などは完全にブランクに変換するので要注意です。

もしurlを”/person/kinopyo”のようにperson.nameにカスタムしたい場合はこれより少し複雑になります。興味のある方は下記リンク(英語)を参照してください。 http://augustl.heroku.com/blog/styling-rails-urls.

Rails: 必須マークを出力するHelperメソッドを作る

2010年07月27日

一つのHelperメソッドを作って、Modelに必須チェックが入ってるプロパティに対して必須マークの”*”を出力します。

まずapplicaton_helperにmark_requiredのメソッドを作ります。第一引数にはオブジェクト、第二引数はそのクラスのプロパティを渡します。

# application_helper.rb
def mark_required(object, attribute)
  "*" if object.class.validators_on(attribute).map(&:class).include? ActiveModel::Validations::PresenceValidator
end

viewのerbには下記のように@userインスタンス変数と:nameを渡します。もしUserモデルに:nameに対して必須バリデーションが存在すれば必須マークが出力されます。

  <div class="field">
    <%= f.label :name %><%= mark_required(@user, :name) %><br />
    <%= f.text_field :name %>
  </div>

参考リンク:http://railscasts.com/episodes/211-validations-in-rails-3

Rails: カスタム バリデート メソッドを作る

2010年07月25日

http://railscasts.com/episodes/211-validations-in-rails-3で学んだ技です。

Rails 3.0 beta4を利用しています。

カスタムバリデーションメソッドを作成する方法を紹介します。

こんなコードがあるとします。Userモデルのemailに対して妥当性チェックは普通こう書きます。

class User < ActiveRecord::Base
  validates :email,  :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i }
end

ここの:format => の部分を抽出してemail_validateというバリデーションメソッドを作ります。

方法

libフォルダにemail_format_validator.rbというファイルを新規作成します。

# lib/email_format_validator.rb
class EmailFormatValidator < ActiveModel::EachValidator
  def validate_each(object, attribute, value)
    unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
      object.errors[attribute] << (options[:message] || "is invalid")
    end
  end
end

そしてUser.rbのソースを下記のように修正します。

#User.rb
class User < ActiveRecord::Base
  validates :email, :email_format => true
end

:email_formatは自動的にEmailFormatValidatorにマッピングします。

はてなブックマークエントリをブログに設置

2010年07月21日

http://b.hatena.ne.jp/guide/blogpartsにて自分のサイトの人気エントリーをブログパーツとして設置できます。

手順にしたがってブログのURLを入力して簡単の設定を行ったあとは貼り付けるコードが生成されるため、それをブログにコピペすればOKです。

できたらこんな感じです。なぜか画像が暗くなっちゃいました。

hatena-bookmark-entry

Rails ActiveRecord::HasAndBelongsToManyAssociationWithPrimaryKeyError

2010年07月20日

Railsでhas_and_belongs_to_manyを使うときにこんなエラーが出ました。

ActiveRecord::HasAndBelongsToManyAssociationWithPrimaryKeyErrorの中身は:



Primary key is not allowed in a has_and_belongs_to_many join table (articles_users).

これはメッセージの通りリンクテーブル(ここではarticles_users)にPKが設定されたからです。

解決方法

:id => falseをmigration文に追加すればOKです。

create_table :articles_users, :id => false do |t|
  t.integer :article_id
  t.integer :user_id
end

SQLiteのよく使うコマンド

2010年07月19日

SQLiteの起動、データベースの選択/作成

sqlite DB_NAME

DB_NAMEは実際のファイル名と同じです。例えば:

sqlite db/development.sqlite3

テーブル一覧

.tables

.ta

テーブルスキーマを見る

.schema TABLE_NAME

ヘルプ

.help

シェルモードを終了

.quit

.exit

詳しくはCommand Line Shell For SQLiteを参照してください。

Macで隠しファイルを表示する方法

2010年07月07日

Macではドット”.”で始まるファイルやフォルダは隠しフォルダ、ファイルになるようです。

Finderで表示する方法を紹介します。

はるか昔のメモです。。

  1. ターミナルを開く(アプリケーション/ユーティリティ)
  2. 下記コマンドを叩いてreturnキーを押して実行
  3. defaults write com.apple.finder AppleShowAllFiles -bool true
    
    killall Finder
    

  4. ログアウト、あるいはkillall Finderで効果が見れます

隠しファイルを非表示にするには

上記と全く同じ手順で、コマンドを書き換えます。

defaults write com.apple.finder AppleShowAllFiles -bool false

アプリケーションをiPhoneからiTunesに同期する

2010年07月03日

iPhoneでアプリケーションを購入して普通はそのままiTunesに同期できるはずですが、時々iTunesがやってくれないです。

あるいはiPhoneで一杯アプリを購入したり削除したりして、パソコンのiTunesとの差分が紛らわしくなったこともあります。その場合はiTunesのアプリを一旦全部削除して下記の方法で一気に同期すればOKです。

アプリケーションをiPhoneからiTunesに同期する

iTunesからiPhoneのデバイスを右クリックして、メニューから「Transfer Purchase」を選択

iOS4を使えば、iPhoneのメモがGmailと同期できる

2010年06月24日

iOS4をインストールできたら、メールアカウントの設定画面をチェックしてみてください。

「メモ(Notes)」という項目が追加されているはずです。

この項目を「オン」にすればOK。

メモは、Gmail上で「Notes」というラベルがつけられています。

ちなみにカレンダーもGoogleに同期できます。

iphone-notes

iphone-notes-2

iphone-notes-4

iphone-notes-3

http://www.lifehacker.jp/2010/06/100623iphonenotes_sync.html

Get Adobe Flash playerPlugin by wpburn.com wordpress themes