タグ

railsとdatabaseに関するjune29のブックマーク (13)

  • Railsで不要なテーブルと古いmigrationファイルを削除する - Kaizen Platform 開発者ブログ

    はじめまして、ハートレイルズの境 (@kazsakai) です。 色々あって今は長野県の伊那という、地理的には日列島の中心らへんだけどあらゆる大都市から満遍なく遠い片田舎に暮らしています。(ちなみにアニメ聖地巡礼発祥の地だそうで) Kaizen Platformさんの社員ではなくパートナーという立場ではありますが、ほぼ最初期くらいから開発に関わっているエンジニアの一人として、今回こちらのブログにお邪魔させていただきます。 Rails の不要テーブルと migration ファイルを整理したい Kaizen Platformさんのプロダクトは日々着実に拡大を続けていて、githubの社内リポジトリ数も今や200を超えていますが、そんなKaizenのプロダクトも最初期には単一のRailsリポジトリからスタートしました。 最初期のプロダクト名「planBCD」にちなんだそのRailsリポジトリ

    Railsで不要なテーブルと古いmigrationファイルを削除する - Kaizen Platform 開発者ブログ
    june29
    june29 2018/08/22
    テーブルをいきなり削除せずに名前変更するテクニックは以前にどこかでも見かけたな。よさそう。
  • Rails アプリでオンラインでカラムの削除やリネームを行うには - eagletmt's blog

    前提知識 Rails アプリにおいて、テーブルの追加やカラムの追加は簡単なものの、カラムの削除やリネームは慎重に行う必要がある。たとえアプリからそのカラムを参照してないとしても、いきなりカラムを削除するとエラーになる可能性が大いにある。 というのも Rails にはスキーマキャッシュというものがあり、テーブルのカラム情報をモデルがキャッシュしているからだ。このキャッシュはたとえばいわゆる N+1 クエリ問題を避けるために includes (eager_load) するときに参照される。 SELECT 句で t0_r0 のような機械的に別名が振られるようなクエリを見たことがある Rails エンジニアは多いと思う。 機械的に全カラムを取得するためにスキーマキャッシュを利用しているため、このようなクエリが実行されてる中でカラムを削除したりリネームしたりすると、スキーマキャッシュをもとに並べら

    Rails アプリでオンラインでカラムの削除やリネームを行うには - eagletmt's blog
    june29
    june29 2017/09/24
    ignored_columns
  • GitHub - ttanimichi/transactional: Declarative transaction management for Ruby on Rails

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - ttanimichi/transactional: Declarative transaction management for Ruby on Rails
  • GitHub - damln/localtower: The first UI to manage your Rails DB migrations.

    - What is Localtower? Localtower is a Rails Engine mountable in development environment to help you generate migrations for your Rails application. It's like ActiveAdmin or Sidekiq UI. You plug it in your config/routes.rb and it works out of the box. Check the Installation section below for more details. - How Localtower works? Localtower gives you a UI to create models and migrations. It will gen

    GitHub - damln/localtower: The first UI to manage your Rails DB migrations.
    june29
    june29 2017/03/31
    ウェブブラウザからスキーマを確認したりモデルを生成したりできる。今のところ PostgreSQL でしか試していないっぽい。
  • Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog

    2016 - 09 - 09 Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 list Tweet こんにちは、ペロリのサーバサイドエンジニアの @a_suenami です。 今回は Ruby on Rails アプリケーションにおけるデータベース設計についてちょっとご紹介したいと思います。 データベース設計してますか? みなさん、データベース(以下、DB)設計していますか?Scaffold したときにできた migration ファイルをそのまま使ったりしてませんよね? Ruby on Rails (以下、 Rails )は CoC(Convention over Configuration: 設定より規約)を強く提唱している フレームワーク であり、それによって得られる恩恵も大きい反面、かなり強めに設計の自由度を束縛されるという特徴もあります。特に

    Rails だって硬いデータベース設計をしたい!そんなあなたに贈る Tips 4 選 - peroli Developer's Blog
    june29
    june29 2016/09/10
    豊富な経験と深い造詣に裏打ちされた、具体的なコード例と抽象的なポエムが絶妙の配分で共存している極上のエントリだ…!(食レポ)
  • Railsでデータベースのユニットテスト - mo-fu note

    Railsのモデルでバリデーションしているけど、 データベース側の制約を使っていなくて、不正なデータが登録されてしまう事がある。 バリデーションだけでなく、データベースの機能を使って不正なデータの登録を防がないといけない。 例えば、以下のような時に不正なデータが登録される可能性がある。 アプリケーションのバグ 手動作業によるデータの登録・更新 他のアプリケーションからデータベースを利用 データベースの機能を使っていろんな制約を付けられるけど、 今回はusersテーブルのemailカラムにUNIQUE制約をつけた時に、その機構が正しく動くかチェックするテストをしてみた。 データベースのユニットテストって感じなのかな。 実行環境 Ruby 2.2.2 Rails 4.2.3 RSpec 3.3 factory_girl 4.5.0 sqlite3 1.3.10 Userモデル class Us

    Railsでデータベースのユニットテスト - mo-fu note
    june29
    june29 2015/07/28
    あとはトランザクションの問題もありますよ。処理が並行して2つ走ると、モデルの validation を抜けて INSERT/UPDATE が実行されたり。データベース側でも弾くのが吉。
  • 関連モデルの命名 - 鳩舎

    今日は Rails での『関連モデル』の名前について考える。 構造としてはこんな感じ。 ・ルーム(Room)に所属するユーザー(User) ・ルーム(Room)での管理者権限を持つユーザー(User) どちらの関連も N:N の関連。いわゆる has_may な感じ。 で、こういう時の命名って Room モデルと User モデルだから RoomUser とか UserRoom とかっていうモデルやテーブルを作りがちなのだけれど、今回は同様の形態の関連が2つあるのでちょっと微妙な事になりそう。 っていうか、まずもって RoomUser モデルってなんだよ。なんのモデルだよそれ。って感じなので名前を考える。 ルーム(Room)に所属するユーザー(User) 関連モデルのデータは大抵2つのフィールドを持っている。 Migration あたりから抜き出すと t.references :room

    関連モデルの命名 - 鳩舎
    june29
    june29 2013/05/12
    Membership モデルをつくって、そこに admin かどうかを示すカラムをつくる、って考えるときもあります。
  • Rails と時刻 - @kyanny's blog

    時刻の扱いは難しい。タイムゾーンを跨ぐと格別に難しい。 Rails を使っていても難しさに変わりはない。むしろ時刻のやっかいな部分を隠蔽してくれるが故に余計にややこしくなることもある。 config.time_zone と config.active_record.default_timezone Rails アプリケーションで時刻を司る代表的な設定値は config.time_zone と config.active_record.default_timezone だ。いずれも config/application.rb で設定できる。詳細は Ruby on Rails Guides: Configuring Rails Applications 参照。 config.time_zone でアプリケーションのタイムゾーンを設定する。デフォルトでは UTC になる。日向けのウェブサイトで

    Rails と時刻 - @kyanny's blog
    june29
    june29 2012/08/17
    タイムゾーンは本当にむつかしいですね… 関連情報のまとめに感謝します。
  • What's new in Edge Rails: EXPLAIN

    The result of that method call is a string that carefully imitates the output of database shells. For example, under MySQL you get something similar to EXPLAIN for: SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `users`.`id` = 1 +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+ | id | select_type | tabl

    What's new in Edge Rails: EXPLAIN
    june29
    june29 2011/12/21
    Running EXPLAIN manually / Automatic EXPLAIN for slow queries / Silencing automatic EXPLAIN
  • なぜMongoDBなのか - Masatomo Nakano Blog

    ここを見てもらってる人に、「MongoDBって何がいいの?」と改めて聞かれてしまって、ああ、そっか、そういうこと書いてなかったな、と思ったので、なぜ自分がMongoDBに興味を持っているのか、ということを書いてみた。いざ自分の思いを書いてみたらRails中心の話になってしまったけど、モダンなフレームワークならそんなに話は変わらないのかな、と思っている。 そもそものきっかけは、ここ半年間くらいRuby on Rails(以下RoR)で開発していることにある。 ここ半年弱ほどRoRで開発をして、それなりに満足しているのだけど、ActiveRecordに関しては色々とひっかかるところがあった。 「ActiveRecordがRoRの素晴らしいところそのものだ」と評価している人もいるが、自分の中では逆で、ActiveRecordはRoRの中でもかなりいまいちな部分。 いや、ActiveRecordと

    june29
    june29 2010/05/22
    「Ruby側のコード主導で」「私は、Railsは好きです」
  • Ruby on Railsを勉強中です。 セッション情報はDB(active_record_store)に格納しているのですが、このセッション情報のうち古いもの(1日前とか)を定期的に削除す…

    Ruby on Railsを勉強中です。 セッション情報はDB(active_record_store)に格納しているのですが、このセッション情報のうち古いもの(1日前とか)を定期的に削除するにはどのようにすればいいんでしょうか? sessionsテーブルで古いものをdeleteすればいいのは分かっているのですが、Railsからどのようなコードを書けばよいのか?(もしくはそんな方法はないのか?)が知りたいです。 RoRバージョン 2.0.2

    june29
    june29 2008/09/06
    script/runner を使う方法など.negipo さんのブックマークコメントもあわせて
  • ActiveRecord で VIEW を使うときの注意点 - moroの日記

    備忘録。ここでいう VIEW は DBCREATE VIEW AS .. するあれです。ActionPack とは関係ないです。試したのはすべてSQLiteです。 とりあえずけっこう普通に使える。 例えば CREATE VIEW AS calculated_results をすると、CalculatedResult クラスから普通に読める。 `id`問題(後述)は残るので view をさらに include で JOIN しようとすると落ちる `id`カラムがあるのを前提に t.id as t0_id とかいう SQL を発行するのでそんなカラムないよエラーになる。当然といえば当然。 そもそも view の identifier てなんなんだろうなぁ。 実利面だけを考えれば、全レコード NULL のカラムを用意すればよろし。 rake db:schema:dump では抜けない テス

    ActiveRecord で VIEW を使うときの注意点 - moroの日記
    june29
    june29 2008/08/28
    「rake db:schema:dump では抜けない」「migration ファイルに CREATE VIEW...」
  • 1