Ruby on Rails

railsの複合ユニーク制約をshoulda_matchersでテストする

Railsのユニーク制約をshoulda-matchersを使ってテストしてみました。結果として、このマッチャーは複数カラムをまたいだ制約の時は使わない方がいい気がしました。1つのカラムでのユニーク制約も、複数カラムのユニーク制約も同じ扱いになっているようです…

gemsetからvendor/bundleにgemを移したら、rspecコマンドがつかえなくなった

vendor/bundleにbundle insatllすればrbenbのgemsetを使う必要がなくなったので、gemsetを削除して切り替えました。するとbin/rspecが使えなくなりました。bin/rspecがrspecの実行ファイルなので、これを自動作成する時の読み込みパスがgemsetのどこかになっ…

コマンド「QUEUE=resque_sample rake environment resque:work」を読み解く

Railsのコントローラで定義したメソッドの中で、長い処理は非同期で行いたいときはありませんか?例えばユーザー登録のメール送信などは、コントローラのメソッドの中でメールが送信されるまで処理を止めるのではなく、非同期にして先に「登録が完了しました…

Railsのモデルをループで回してdestoryする時に、関連テーブルのレコードも削除したい

下記のモデルと対応するテーブル、3つずつ作成して実験しました。括弧内はカラムを表しています。 Post(title) Tag(name) PostTag(postid, tagid) これでdb/seeds.rbにレコードの追加、削除を記述します。title1という記事につけられたtag2を削除します…

Railsのモデルバリデーションとカラム制約のユニークはどう挙動が変わるのか

下記のモデルと対応するテーブル、3つずつ作成して実験しました。括弧内はカラムを表しています。 Post(title) Tag(name) PostTag(postid, tagid) db/shema.rbにadd_index :tags, :name, unique: trueを追加して、モデルにバリデーションを追加すると、…

Railsチュートリアルのサインインの仕組みをまとめる

railsチュートリアルのサインインの部分を、自分用にまとめました。 第8章 サインイン、サインアウト | Rails チュートリアル viewのレンダリングまでの大まかな流れ app/controllers/users_controller.rbのnewメソッドを見てみます。この中には@user = User…

railsでrake db:createをするとCan't connect to local MySQL server through socket '/tmp/mysql.sock'と表示される

dbを作成しようにもCan't connect to local MySQL server through socket '/tmp/mysql.sock'というエラーが起きて作成することができませんでした。brewでmysqlをインストールしたのでmysql.sockというファイルが違う場所にあって見つからないのかなと思った…

rails newがrun bundle installで止まってしまう

rails new myappname -d mysqlを実行するとlogがたくさん出てrun bundle installでずっと止まっていました。rails newmyappnameでは完了しました。どうやらmysqlが入っていなかったようでbrew install mysqlでインストールすれば、無事railsをプロジェクトを…

Rails初心者のアセットパイプラインに関する疑問19個をまとめてみた

下記のページで読んで浮かんだ疑問をまとめてみました。アセットパイプラインがあるので、GruntやGulpなどのタスクランナーを使って、プリコンパイルする必要がなくなるのはとってもいいですね。 アセットパイプライン | Rails ガイド そもそもアセットって…

Rails初心者のマイグレーションへの11個の疑問をまとめてみた

Railsのマイグレーションの学習をしながら、いくつか疑問をまとめてみました。わかっていても疑問文を作っています。その方が頭に残るのと、視点を変えて学習できると思うので。 マイグレーションファイルはどこにある? アプリケーションルート/db/にありま…

railsでsidekiqのQue(キュー)が実行されない

作成したrubyスクリプトを定期的に実行させるために、sidekiqというgemを使うといいと教えてもらいました。下記の記事を参考にしていたのですが、かなりつまづいてしまいました。その際に必要だったことをメモしておきます。 Rails - sidekiqの使い方 - Qiit…

railsを再開するために、treeコマンドで構造を確認して疑問点などをメモ

以前railsのチュートリアルでrailsを学んでいたのですが、中途半端なところでpythonの学習に移行してしまいました。今回は他の人とrailsを使う機会があったので、まずtreeコマンドを打ってざっとわからないところを挙げてみました。こういうのを残しておくと…

rvmを使っているとrailsとbundleコマンドが使えなくなった

Railsのチュートリアルをやっていて、railsとbundleコマンドが使えない自体が発生しました。sporkを使った自動テストを設定している時でした。 第3章 ほぼ静的なページの作成 | Rails チュートリアル 常に使えないわけでなく、何故かターミナルを開いてさら…