rails
RSpec…RubyにおけるBDDのためのテスティングフレームワーク BDD…Behavior(振舞)をまず作り、その後にプロダクトコードを書く開発手法 Capybara…RSpecと組み合わせて使うE2Eテスト用フレームワーク。ブラウザ操作などをシュミレーションできる。 E2E…End to…
bookseriesという本のシリーズを管理するテーブルがあります。 このテーブルは本の様々な情報を持つbookテーブルと紐付いています。 bookseriesに出版社名のカラムであるpublisherを追加します。 このカラムはbookにある出版社名のカラムと同じレコードを持…
以前書いたS3で簡単なWebページを作るメモから参照し、S3を作成しておく。 以下S3を作成した前提でのRails側でのメモ IAMユーザー作成 S3を操作するIAMユーザーを追加する。 ユーザー名を適当に、アクセスの種類は「プログラムによるアクセス」 アクセス権限…
あくまで学習の一環としてのメモ。 VPCの作成 まずはVPCの作成。 CIDRブロックは10.0.0.0/16で。 EC2用のサブネットを作成 EC2用なので、外部と通信できるサブネットを作る。 CIDRブロックは10.0.0.0/24 インターネットゲートウェイを作成 EC2用のサブネット…
とりあえず初心者なりに、用語を調べながらなんとかdocker-composeを理解できそうです。 これからも使うことになるので、メモとして説明を入れながら書いてみました。 version: '3' #docker-composeのバージョン指定 services: #各コンテナの設計を書いてい…
Twitter連携を使用し、ログインした場合Twitterを伝って持ってこれる情報にはメールアドレスはありません。 なので認証するときはダミーのメールアドレスを生成し、それをメールアドレスとして設定していたのですが、Deviseのメール認証をオンにしているとダ…
本来、環境変数として設定してプッシュしなければいけなかったファイルを誤ってプッシュしてしまったときなど、そのファイルの履歴はずっと残ってしまうので、APIのKeyやらが全世界に公開されてしまいます。 先日その過ちを消すことに成功したのでメモ。 ま…
f.selectで作成したセレクトボックスを使って検索機能を採用しているのですが、検索するたびにセレクトボックスの値が初期値になると何かと不便です。 選択した値をページが切り替わっても保持するため、初期値にそのセレクトボックスのparamsを代入し、結果…
バリデーションを書く validates :user_id, :uniqueness => {:scope => :book_id} 一応migrationファイルにもt.indexを使ってDB側で同じ組み合わせが重複しないようにはしているけど、バリデーションとしてエラーを出せるように書いてみた。 こうすることで…
昨日初めてRSpecに手を出しました。 そこで気がついたんですが、もっと早くやっておけば良かったと思います。 多分そこらへんはコードとテストをどっちを先に書くかみたいな話にもなるとは思うのですが、僕自身、ポートフォリオを作成中で、最低限の機能を追…
残念なことに楽天APIでは入力パラメーターに発売日を指定して検索をかけることはできないみたいなので、無理やり新刊を検索するコードを書きました。 入力可能なパラメーターはいくつかありますが、その中でも出版社毎に新刊を抽出します。 def download @pa…
特定の検索ワード等が複数あって、それをeach do内でwhereを用いて引っ張ってきたものを、ある配列にまとめる処理を繰り返す感じになります。 @books = [] @findbooks.each do |book| comics = Book.where("title LIKE ?", "%#{book}%") comics.each do |com…
form_forで書いていたものをform_withに修正したところ、classに書いたBootstrapが反応しなくなりました。 f.select :month, options_for_select(['10', '11', '12']), class: "form-control" 本来ならform-controlを指定したので、デザインがBootstrapのそ…
Deviseのインストールやログイン周りの設定は既に完了している前提。 ユーザー登録時に、登録したメールに認証用のリンクを送信し、本当にメールが合致するかどうかの認証を作ってみます。 user.rbに追記 devise :database_authenticatable, :registerable, …
なんらかのWebアプリを作るとき、面接で使うポートフォリオ用の場合だと、かんたんログイン機能というワンクリックでログインできる機能があると何かと便利です。 ということで簡単にかんたんログイン機能を実装してみたので、記録しておきます。 既にログイ…
いいね機能を例に簡単にAjax機能を追加してみます。 Ajaxの概要 サーバーと通信したときに、ページ遷移を行わず指定した一部分だけを変更する処理のこと。 何らかのボタン等を押して、リクエストを送ったときに 本来ならば設定したerbやhamlをレンダリングす…
既にdeviseで普通のログイン機能は作っている前提のメモ。 Gemのインストール gem 'devise' gem 'omniauth-twitter' $ bundle install TwitterAPIkeyを入手するためにDeveloperに登録 https://developer.twitter.com/en/apps 初めて利用するときは、とりあえ…
ハッシュを並び替える。 基本、sortメソッドを使用する。 使い方 ハッシュのキーをソートするとき hash.sort ※降順の場合は hash.sort.reverse と、後ろにreverseを付ける。 ハッシュの値でソートするとき hash.sort_by{ | k, v | v } sort_byを使う。 kがキ…
もう何度も作成していますが、未だにややこしく、ググったりしているので一度まとめようと思いました。 まず、小文字大文字、複数形などが整理できていないときは確認する。 qiita.com 中間テーブルの作成 rails g model Subscribe user:references book:ref…
楽天BooksAPIからは本の発売日を文字列として抽出することができます。 しかし実際に扱うとなると文字列だと使い勝手が悪かったので、あくまで自分のアプリを作成する上での解決策を記しておきます。 結論から言うと、正規表現で弄って、int型にするだけ。 …
下記のようなBootstrapのCollapse(折りたたみボタン)を利用する場合、 折り畳み~Bootstrap4移行ガイド each do内だと、上のボタン式例でいうcllapseExampleの部分はcollapse<%= key %>などとする必要がある。 <% book.each do|key| %> <p> </p>
ちょっと悩んでしまったので備忘録。 結論から言うとデフォルトでnilは許可されていないのが原因でした。 belongs_to :book, optional: true というように後ろにoptional: trueをつけることでnilを許可させることが出来ます。 どうやらrails5からはデフォル…
オブジェクトとは 現実世界における”モノ” Railsにおける処理をするための万物。 オブジェクトの例 文字列 ""で囲ったもの 数値 そのまま。数。 object_id オブジェクト.object_idとすることで、object_idという固有の番号を見ることができる。 すべてのオブ…
簡単な管理者ユーザー機能を作ったメモ。 まずは既存のusersテーブルにカラムを追加。 rails g migration AddAdminToUsers migrationファイルを編集する。 class AddAdminToUsers < ActiveRecord::Migration[5.2] def change add_column :users, :admin, :bo…