Webアプリのデバッグやチューニングに役立つ、Chrome Developer Toolsの主要機能を、スクリーンキャプチャ中心で簡潔に紹介。2014年10月に最新情報に改訂。 モダンブラウザーの中でGoogle Chromeは最後発ながら、その機能の潤沢さ、便利さ、高速さからシェアを大きく伸ばしている。そして、今やほとんどのブラウザーではWindowsの場合F12キーを押すことで(Macの場合はCommand+Option+Iキーで)手軽に各ブラウザー搭載のデベロッパーツールを利用できるが、特にChromeのデベロッパーツールは、非常に機能が豊富なため、利用している人もかなり多い。 本稿では筆者がよく使う機能や、使うと便利な機能を中心に、Chromeのデベロッパーツールについて紹介していく。なお、本書は執筆時点で、最新のChrome 38を使用している。 機能ふかん 残念ながら、Chro
Railsではバリデーション(Validation)という仕組みがあります。 フォームなどでユーザーからの入力値をDBに保存する前にその値が正しいものかモデル層で(システムとして許可している値か)を検証する仕組みです。 バリデーションの基本的な流れ、バリデーションの定義とバリデーションのテスト方法、バリデーションのスキップなどのバリデーションの基本についてまとめました。 動作確認 Rails 4.1 ActiveRecord 4.1 shoulda-matchers 2.6.3 目次 1. Railsでのバリデーションの流れ 2. バリデーションを定義する 2.1. 存在チェック(presence) 2.2. 一意性(ユニーク制約)のチェック(uniqueness) 2.3. 長さのチェック(length) 2.4. フォーマットのチェック(format) 2.5. 数値の値チェック(nu
注: factory_girlはfactory_botに改名されました。 おなじみfactory_girlがちょっと分かってきたので覚え書きがてらメモです. FactoryGirlって,あちこちで見る事例がシンプルすぎることが多くて手元のある程度複雑なデータ構造のFactoryをどうやって書くか,ピンと来ないことが多い気がします.要試行錯誤ですね. 前提Model この記事で使うModelの前提です.掲示板(Forum)があり,そこに対して記事(Post)を投稿するのですが,記事には商品(Product)が紐付いている,というものです. イメージとしては「おまえらのオススメガジェット教えろ」みたいなのがforumで,postには具体的なコメントと商品を選択して評価スコア(100点満点)と一緒に投稿できる,といったものになります. Rails4前提なので,attr_accessibleは書い
[Rails]migrationで外部キーを設定する際に、参照先テーブルと異なるカラム名をつけたい場合 migration時に外部キーを設定する場合、referencesを使いますが、参照先テーブルと異なるカラム名をつけたい場合はどうしようと思い調べてみました。 Usersテーブルのuser_idを、Likesテーブルのuser_idとtarget_user_idの外部キーとして設定したい場合のサンプル migration# db/migrate/xxxx_create_likes.rb class CreateLike < ActiveRecord::Migration def up create_table :likes do |t| t.references :user t.integer :target_user_id, :null => false # references を使
今回は ActiveRecord ついて説明していきたいと思います。 A Guide to Active Record Associationsと、 Active Record Query Interface を参考にしました。 また、図もこちらから拝借させていただきました。 Rails での関連 Rails では関連を設定することでモデルオブジェクトを接続し構造を作ることが出来ます。 関連の設定はモデルクラスに宣言的にメソッドを書き入れることによって行います。 使えるメソッドとしては大きく分けて以下の6種類があります。 belongs_to has_one has_many has_many :through has_one :through has_and_belongs_to_many ここからはこれらのメソッドをどのように使うのかを説明していきたいと思います。 一対一関連 一対一関
よくRailsプロジェクトを作るので、Railsプロジェクトを作った後に最初にやっておきたい設定をまとめました。 主に、開発を効率化させるためにやることをまとめてますので、ざざっと眺めて取り入れそうな知識があったら開発効率を上げれるかもしれません。 また、nanapiさんの次の記事もとても参考になります。Rails Templateでプロジェクト作成を楽にしよう 動作確認 mac os X 10 rails 4.2.0 目次 1. Railsプロジェクトの作成 2. Gitにプロジェクトを登録 3. 開発を効率化させるGemをがっつり導入 3.1. gemのインストール 3.2. jquery-turbolinksの設定 3.3. 開発を効率化する関連gemの設定 3.4. 保守性を上げる 3.5. 表示整形関連(ログなど見やすくなる) 3.6. テスト関連 4. 言語設定 5. タイムゾ
既存のテーブルに外部キーを追加する場合は、上記のコマンドでは追加できない。その場合はmigrationを用いる。 ちなみに、railsには以下の規約がある。なので上記のテーブル名は小文字かつ単数形である必要がある。 テーブル名とクラス名 テーブル名は複数形 単語の区切りはアンダーバー(_) 対応するクラス名は単語の先頭を大文字にして _ を取り除いたもの キーのカラム名 主キーのカラム名は「id」 外部キーのカラム名は「テーブル名の単数_id」 日付関連のカラム名 DATE型のカラムには名前を 「受動態_on」 TIMESTAMP型のカラムには名前を「受動態_at」 更新日時、作成日時は「updated_at」、「created_at」 結合テーブル 関連させたいテーブル名をくっつけた名前にする カラム「id」を作らずに、関連させる2つのキーのセットを主キーにする 参考: Railsドキュ
Railsで多言語対応する時、localeのymlファイルをjavascriptで利用できるi18n-jsというgemが便利です。i18n-jsについてはRailsでi18n-jsを使ってJavaScriptの国際化にわかりやすくまとめられています。 ただ、このi18n-jsは工夫して使わないとパフォーマンスが劣化することがあります。 巨大なtranslation.js i18n-jsを普通に利用すると、全ての言語の翻訳がtranslation.jsという1つのjavascriptにまとめられます。ユーザーが見る言語分だけでいいはずなのに無駄にファイルサイズが膨らんでしまい、スマホで見るとjsのロード時間に時間がかかったりします。 そこで、i18n-jsをlocaleごとに分割して必要な言語分の翻訳リソースのみを利用するようにすることでロード時間を短縮することができます。 1. i18n-
gistfile1.md ruby-debugを使ったRuby・Railsアプリケーションのデバッグ方法 インストール # Ruby 1.8系の場合 gem install ruby-debug # Ruby 1.9系の場合 gem install debugger bundlerの場合は gem "ruby-debug" をGemfileに追記して bundle install します。 チュートリアル デバッガを起動する デバッグしたい場所で debugger メソッドをコールします。 class User def name debugger # ← これ puts "千早" end end rails consoleを --debugger オプション付きで起動します。 起動時にデバッガが有効になった旨のメッセージが出力されます。 script/console --debugger
今回は、Ruby on Rails のモデルクラスに対するテストの書き方を解説します。 Customer モデルの仕様 この連載のサンプルアプリケーション Sinope がいったい何を目的とするものなのかまだ決まっていませんが、仮に「顧客(customer)」という概念が必要で、そのために Customer という名前のモデルを用意するものとしましょう。 このモデルの主な仕様は以下の通りです: 姓(family_name)、名(given_name)、姓フリガナ(family_name_kana)、名フリガナ(given_name_kana)が必須入力項目。 それぞれ40文字以内。 姓と名で許される文字の種類は、漢字、ひらがな、カタカナ。 姓フリガナと名フリガナはカタカナのみ。ただし、ひらがなでの入力も受け付けて、カタカナに自動変換する。 いわゆる半角カナは全角カナに自動変換する。 今回は
Railsで多言語対応する時、localeのymlファイルをjavascriptで利用できる『i18n-js』というgemを利用するのが便利です。i18n-js については『Railsでi18n-jsを使ってJavaScriptの国際化』にわかりやすくまとめられています。ただ、このi18n-jsは工夫して使わないとパフォーマンスが劣化することがあります。 i18n-jsを普通に利用すると、全ての言語の翻訳がtranslation.jsという1つのjavascriptにまとめられます。ほとんど使わない言語のせいでリソースのファイルサイズが膨らんでしまうので、スマホで利用する場合は顕著にパフォーマンスに影響してしまいます。 今回パフォーマンス改善の一環でi18n-jsをlocaleごとに分割して必要な言語分の翻訳リソースのみを利用するようにしてみたので、やり方をメモしておこうと思います。 1)
HTMLで特定の要素を全て取得して回したい場合はJavaScriptなどで繰り返し処理をしますが、jQueryを使った場合の方法をまとめます。 対象としてはこのようなHTMLの場合です。 <div class="comment">コメント1</div> <div class="comment">コメント2</div> <div class="comment">コメント3</div> ... .each()メソッド jQueryで繰り返しといえばeach()メソッドです。基本的な構文は以下の通り。 $('セレクタ').each(function(index, element){ 〜 }); 第1引数には各要素のインデックス番号が、第2引数には繰り返し処理中の要素が参照されます。2つの引数はどちらも省略可能です。このメソッドを使えば要素数分、繰り返して指定した関数を実行してくれるわけですね。簡
サーバーサイドでのvalidation結果をajaxのフォームに反映させたい時ありますよね。 htmlをエラーメッセージ表示部分を固定で準備しておきます。エラーが起こったら表示するために、最初はhideを指定して表示されなくします。 <div class="alert alert-danger hide" id="image-new-error-message"> データの登録に失敗しました。 <div id="errors"><ul/></div> </div> <%= form_for Image.new, :html => {:multipart => true, :id => "image-new-form"}, :remote => true do |f| %> <%= f.file_field :image %> <%= f.text_field :title %> <%= f
仕事の進みがちょいとアレなので、現実逃避もとい気分転換に。 フォームの入力内容を、jQuery.ajax()を使ってサーバーへ送信したいって時のパターンです。 基本的な流れ フォームのsubmitを拾う 通常の送信はキャンセル 送信ボタンを無効化 送信先URLやフォームの入力値を取得 送信 受信後、送信ボタンを戻す 入力値をどう得るか、というのがポイントかと思います。 送信ボタンを無効化するってのはやらなくても良いんだけど、誤操作防止のためにも是非やって頂きたいと思います。あと送信ボタンの制御以外にも応用がききます。 デモ なんかお問い合わせフォーム的なものを用意しました。 まー実際にお問い合わせフォームをAjaxで送信する場面なんてないような気もするんですが、基本パターンという事で。
2013年08月05日14:53 Ruby JavaScript Rails4 + Capybara + PhantomJS (poltergeist) なテスト環境 Rails4 でのエンドツーエンドなテスト環境を作ってみたのでメモです。 統合テストといえば Capybara さんなわけですが、デフォルトだと JavaScript を実行する際にドライバとして Selenium が使われてしまいます。 Selenium さん良い人なんですが、、、ブラウザが起動するので重いし、そもそも毎回ブラウザが起動する必要は無いのでヘッドレス(ブラウザの起動無しに JavaScript が実行できる)ドライバにしちゃいましょう。サヨナラ。 ヘッドレスドライバはいろいろあるんですが、最近は PhantomJS というライブラリが良いみたいなのでこれを使ってみます。Capybara から PhantomJ
redisサーバの起動 $redis-server クライアントの起動 $redis-cli ここでいろいろ操作できる 終了 redis-cliから $shutdown ※Ctrl + Cでも停止できるけど、メモリに残っているデータは消える サーバが裏側で動いているとき サーバを立ち上げようとして、 [90750] 13 Nov 18:47:25.610 # Creating Server TCP listening socket *:6379: bind: Address already in use のエラーが出ることがある →既にそのアドレスは使われている(既にサーバが立ち上がっている) 確かめる redis-cli ping →pong が返ってきたらredisが動いている $redis-cli shutdown で停止することができる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く