Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
RailsのChangeLogを読んでいたらkamipoさんの ActiveRecordへのコミットがRails5から使えるようになってるものがたくさんあったのでまとめてみました。 PostgreSQLでExpression IndexとOperator Classをサポート MySQLでPrepared statesmentsをサポート config/database.ymlでprepared_statements: trueとすると利用できるようになります。mysql2 0.4.4以降が導入されていないと使えないようです。 Schema dumperがcreate_tableブロックの中でindexを定義するようになった schema.rbのcreate_tableのブロック内でt.indexでインデックスが定義されるように変更されています。以前はcreate_tableのブロック外で
Every now and again we need to change actual data in the production database. The first obvious option that comes to mind is to use a Rails migration, especially since the word “migration” is already in the task at hand, a “data migration.” But let’s talk about it some more and let me try to dissuade you from doing so. Looking the at Rails Guides for Active Records Migration, the first section sta
ActiveRecord4でこんなSQLクエリどう書くの? Merge編 では、関連先のscopeを使うことができるmergeを紹介しました。mergeを使う事で、変更に強いクエリを美しく組み立てることができました。 今回は、ActiveRecord4で書きにくいSQLクエリたちを紹介します。 書きにくいクエリとは、具体的には以下のものがあげられます。 比較演算ORlikeleft outer joinunionサブクエリexists ActiveRecordでこれらのクエリを組み立てる場合、どうしても美しくない(SQL文字列をべったり書いてしまうような)書き方となってしまいがちです。 この処理を美しく書くためには、ActiveRecordだけの機能では足りず、ActiveRecordが内部で使っているArelというライブラリを使う必要がでてきます。 今回は、Arelを使って華麗にSQLク
行ロックとは 行ロックとは、テーブルの同一レコードに対して、複数同時に更新できないように制限する仕組みのことです。 Ruby on RailsのActiveRecordには2種類のロック方法があります。 楽観的ロック(Rails依存) 悲観的ロック(DBMS依存) それぞれの違いや使い方について解説していきたいと思います。 楽観的ロック 楽観的ロックとは、DBMSの機能に頼らずロックバージョンをレコードに保存しておくことで、取得時と変更時にロックバージョンに変更がないか確認し、変更があった場合は例外を発生させる方法です。 ロックするタイミング データ更新時 データを複数同時に取得することができるが、途中で更新されていた場合は、更新できない 仕組み テーブルにlock_versionフィールドを追加する lock_versionが書き換わっていたらActiveRecord::StaleObj
2013年12月2日更新: 参照されることが多いので Rails 4 の情報を訳注として追記しました。また、Rails 4 に関する情報は、 WEB+DB PRESS Vol.73 が非常に参考になるので、一読をおすすめします。 この文章は Mitch Crowe 氏のブログより 2012年4月14日の記事を翻訳したものです。 The 10 Most Underused ActiveRecord::Relation Methods http://blog.mitchcrowe.com/blog/2012/04/14/10-most-underused-activerecord-relation-methods/ 昨日は ActiveRecord::Relation のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用
ActiveRecordを使ったRailsアプリは,デフォルトでデータベースへの接続をプールするようになっています. ActiveRecordユーザとしては待ちわびたぜ!的な機能らしいのですが,設定等でこれをdisableすることが出来ず,LVS+keepalivedを介する場合にはロードバランシングが最初の接続時にしか為されずがなかなか厄介です. 対策として思いついたのは プールした接続を早い周期で捨てる LVS+keepalivedではなく,MySQL Proxyでバランシングする(Proxyへの接続はプール) そもそも接続をプールさせない くらいでした. どうするのがセオリーなのかと調べてみると コネクションプーリングの話 - naoyaのはてなダイアリー 2006-09-03 など4年近く前に議論されていて,"あー,高速道路あるなあ"と,コネクション確立のコストを調べる前に「プール
Modelはそもそもいろんな案件で使い回しが聞く、これは当たり前である。しかし俺がいってるのはそういうことではなくて、ActiveRecordとDataMapperではその取り回し、扱いやすさに大きな差があって、DataMapperの方が扱いやすいということを書いている。 ActiveRecordは既存のデータベース設計があって、それに対して自動でスキーマ定義を読み込んでRubyオブジェクトっぽく扱えるようにするというライブラリなんだけど、一方DataMapperはコードでRubyのクラスとして記述すると、それがデータベーススキーマとして生成できる。 実際にコードで書くとこんな感じ ActiveRecord class Channel < ActiveRecord::Base def logic end end DataMapper class Channel include DataMa
第5回 MongoDB.jp 勉強会 in Tokyoに行ってきた! メモとかはまたのちほどアップするとして(そういえばRubyKaigi最終日のメモもアップできていない)、@yuki24 さんの発表で「ActiveRecordとMongoidは共存」できるという話を聞いて、ちょっと試してみた。 その過程で適当に作ったコードをgithubに上げておく。Todoを作成・更新した際にその内容をTodoLogに吐き出すというモノ。 mongoidのインストール これは普通に。 $ gem install bson_ext mongoid $ rails g mongoid:config Mongoidのモデルの作成 mongoidをインストールするとmodelジェネレータがmongoidのモデルファイルを生成してくれる。 $ rails g model todo_log title:string
rails3.1でMySQLからやってくる文字列がASCII-8BITになっているのでto_jsonすると壊れる(to_jsonがencodingを見て処理するので)。sqlite3では起こらない。 環境はSnow Leopard、ruby1.9.2-p290、homebrewで入れたmysql 5.1.54。 % rails new foo % cd foo % vi Gemfile (...) gem 'mysql' (...) % bundle % vi config/database.yml (...) development: adapter: mysql encoding: utf8 database: foo_development pool: 5 username: root password: host: localhost socket: /tmp/mysql.sock
それでは、マイグレーションファイルの内容を見ていきましょう。 先ほどのUserクラスの例では、rails gコマンドで次のようなマイグレーションファイルが生成されます。このマイグレーションファイルは、「usersというテーブルを作成する」というスキーマ変更に対応するとともに、「20110403005910」というスキーマバージョンを表しています。なお、このバージョンの数字は、マイグレーションファイルをコマンドで生成する際に日時をもとに自動で付与されます。 class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| t.string :name t.string :email t.date :birthday t.integer :number t.timestamps end end
2008年01月01日19:17 カテゴリRubyOnRailsプログラミング ROR:カラム名に'type'はNG 5時間ほどはまりました。 原因がわかったら、簡単でしたが、 原因判明するまで、ログ見てもわかんねー。 英語サイトで何とか情報あったが、違うところがNGだと思っていたので 何度も素通りしてしまった。 http://fukamachi.org/wp/2007/05/14/type-a-reserved-word-in-rails-database/ rakeで以下のエラーが出たら、 カラム名に'type'がないかチェックしてみてください。 (エラーの意味は、予期せぬ数値です。って感じか・・・) --------------------------------- SyntaxError: compile error c:/ruby/lib/ruby/gems/1.8/gems/a
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く