2013-01-01から1年間の記事一覧

jQuery UI を Rails 4 のプロジェクトに導入する

表題の件について datepicker の導入を例に説明します。 まずは Gemfile を更新。 gem 'jauery-rails' この下に gem 'jauery-ui-rails' を追加します。終わったら bundle install をお忘れなく。 次に app/assets/javascripts/application.js を更新。 // re…

textarea のカーソル位置にテキストを挿入する

jQuery 1.9 を用いて textarea の現在のカーソル位置にテキストを挿入します。動作は IE 6 〜 9, Chrome, FireFox の最新版で確認。 function insertAtCaret(target, str) { var obj = $(target); obj.focus(); if(navigator.userAgent.match(/MSIE/)) { var…

acts_as_taggable_on で jQuery を使った入力補助を行う

acts_as_taggable_on は便利なプラグインですが、デフォルトでは「tag1,tag2,tag3」のようにタグを半角カンマで区切った入力を行うため、一般のユーザ向けとは言えません。そこで jQuery を使って入力補助を行います。Rails 4.0 + Ruby 2.0 で検証しました。…

Rails 4 + Ruby 2.0 で画面遷移無しのファイルアップロード

表題のとおりのサンプルプロジェクトを作成します。まずはプロジェクトを新規作成します。 rails new sample_uploadscaffold でアップロード機能を作成、この辺はいつもどおり。 bundle exec rails g scaffold attachments title:string path:text何かと不便…

rubyzip のバージョン更新でエラーが起こる

表題の件ですが Rails アプリの Gemfile で次のような指定をしていたところ、更新時にエラーが発生しました。 gem 'rubyzip', :require => 'zip/zip' エラーの原因は rubyzip gem のバージョンが 1.0.0 になった際にrequire 以降を記述する必要が無くなった…

IE9 以下で jQuery 1.9.1 の html(val) が動作しない件

表題の通り、次のようなコードが動作しません。 var val = "<div>test</div>"; $("#hoge").html(val); IE10 では正しく動作する事を確認したのですが手元の環境では IE9 以下ではすべて動作しませんでした。とりあえずの対策としては html(val) を replaceWith(val) に…

Rails の request.remote_ip には何の値が入っているのか

表題の通り Rails 3.2.X 系の request.remote_ip に入っている値について調べました。 最初に結論 リクエストヘッダを読み HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, REMOTE_ADDR の順にセットされていた値を取得してきます。 ソースコード http://api.rubyonr…

マイグレーションのバージョン管理

過去の経緯 Rails 2.1 以前のバージョンでは、マイグレーションファイルは「001_create_hoge.rb」のように単純な連番で管理されており、現在のマイグレーション番号については schema_info というテーブルで最後に実行された数値だけを管理していました。 そ…

Rails 3.2.13 の Associations でデッドロックが起こるかもしれない問題

データベースに InnoDB の MySQL を用いた Rails アプリケーションで、次のような二つのクラスを用意します。 class Parent < ActiveRecord::Base attr_accessible :name has_many :children, :dependent => :destroy end class Child < ActiveRecord::Base …

Mac の Web 共有で php を動かす

Mac に標準でついている Web 共有機能を使うと、プリセットの Apache を起動して簡易的な Web サーバのように動作してくれます。この機能の使い方と php ファイルの動かし方、設定方法について説明します。 Web 共有の使い方 この機能を知らなかったという方…

Ruby 1.8 系と 1.9 系では Timeout::Error の継承元クラスが異なる

1.8 系の最終版である Ruby 1.8.7 では Timeout::Error < Interrupt < SignalException < Exception < Object < Kernelであり Ruby 1.9 系では Timeout::Error < RuntimeError < StandardError < Exception < Object < Kernel < BasicObject になっています…

Rack::Protection を Rails 3.2.X から使う

脆弱性対策を自分で考えるのは限界があるので、仕組みについてはきちんと知った上でライブラリのお世話になりましょう。これ自体は Rack を用いたアプリケーションであれば何でも使えるのですが、今回は Rails で使う場合のお話をします。 導入手順 まずアプ…

2013

コングラッチュレーション ,―==7 Congratulation! コングラッチュレーション |く ___ _> Congratulation! fll`ーU+' `''、 ー=| おめでとう・・・・・・・・! _,,..-´:|ヽー-;ー..,,_ . ,−=-, ,,..-‘≡≡:| ><´|≡::|ヽ おめでとう・・・・・・・・…