dev/mom0tomo

技術メモ

【メモ】herokuにRailsアプリケーションをデプロイするときのコマンド

うっかり忘れがちなので自分用にメモにまとめておく。 // ログイン $ heroku login // アプリケーション作成 $ heroku create my-rails-app // 作成されたか確認 $ heroku apps my-rails-app // herokuにpush $ git push heroku master // pushされたか確認 …

Rails kaminariでページネーションを実装する

読んだもの github.com 学んだこと kaminariの使い方はすごく簡単。 tasks_controller.rb def index @tasks = Task.all.page(params[:page]) # @tasks = Task.all <- kaminari利用前のコード end index.html.erb <h1>タスク一覧</h1> <ul> <% @tasks.each do |task| %> <li> <</li></ul>…

Railsでパーシャルを切り出すときはインスタンス変数をローカル変数にする

new.html.erb <h1>新規タスク作成</h1> <%= form_for(@task) do |f| %> <% f.label :content, 'タスク' %> <% f.text_field :content %> <% f.submit '登録' %> <% end %> <%= link_to '一覧に戻る', tasks_path %> edit.html.erb <h1>タスク編集画面</h1> <p><%= @task.content %></p>…

RailsでviewのフォームからcontrollerにPOSTでデータを送信する

RailsのCRUDの基本のところで、newアクションからcreateアクションにデータを送るあたりがよくわからなくなったのでまとめる。 学んだ事 formタグのPOSTメソッドとパラメータの関係 まずはRailsではなく素のHTMLで考える。 <form action="/" method="POST"> <label>名前: <input type="text" name="target_name"></label> <input type="submit" value="送信"> </form> viewにこのようなフォー…

パラメータがネストしているときのストロングパラメータの書き方

前回の応用編。 読んだもの qiita.com 学んだこと ネストしたパラメータのサンプル { "name": "momo", "address": { "prefecture": "Toyo", "city": "Shinagawa" } } 上記のようなネストした構造のパラメータについて、ストロングパラメータの書き方は以下の…

ストロングパラメータの簡単なサンプル

読んだもの qiita.com 学んだこと Railsではストロングパラメータを必ず使う フォームの受け渡しなどで使わないとエラーになる(警告) ストロングパラメータの基本的な書き方 params.require(:user).permit(:name, :email, :password) やっていること 以下…

Sinatra(Ruby)とGoの標準パッケージで立てたサーバを見比べる

たまたま同じ時期に0からサーバーを立てる機会に恵まれて、似てるなと思ったので比較してみる。 Sinatra app.rb require 'sinatra' get '/' do erb :index end index.erb <html lang="ja"> <head> <meta charset="UTF-8"> <title>タイトル</title> </head> <body> <p>Sinatraだよ</p> </body> </html> Go init.go package main import "net/http" func init…

moduleとclassの比較メモ

moduleはclassと違って以下の特徴を持つ。 インスタンスを生成することができない 継承することができない 名前空間、Mix-inとして使用される

selfを理解する

mom0tomo.hateblo.jp 前回の続き。 selfについて、実務であまり使うこともなくちゃんと理解しているのが怪しかったので確認する。 self は、クラス内部の変数やメソッドを明示して使うときに利用する。 class Person attr_accessor :name, :age def initiali…

attr_accessorメソッド

attr_accessor はクラス内で変数を定義するためのメソッド。 下記のように、引数として与えられたシンボルをクラス内の変数として定義する。 class Person attr_accessor :name, :age def initialize self.name = 'もも' self.age = 22 end end mom0tomo = P…

リテラルとはなにか

簡単にいうと、 リテラルは値 である。 a = 'hoge' としたとき、'hoge' のことを「文字列リテラル」と呼ぶ。 a = 1 としたとき、1 のことを「数値リテラル」と呼ぶ。 配列・ハッシュ・論理値・nilもリテラルである。 リテラルは値なので、変数に代入できる。…

Rubyのattr_readerについて

読んだもの ref.xaio.jp 学んだこと attr_readerメソッドはアクセサメソッドを定義する。 アクセサメソッドとは、クラスやモジュールにインスタンス変数を読み出すためのメソッドである。 引数には、インスタンス変数名をシンボルか文字列で指定する。 下記…

Rubyのmapとeachの違い

読んだもの manji602.hatenablog.com すごくわかりやすかった。 学んだこと each eachはレシーバ自身が返る。 def each_sample (1..10).to_a.each do |i| i + 10 end end => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] レシーバ i が返っており、インクリメントはされ…

Rubyのelsifとガード節について

コードレビューで、if elseは条件が対称な場合にだけ使った方が良いという指摘を受けた。 # if elseを使うのに適しているものの例 if number.odd? # 奇数の場合の処理 else # 偶数の場合の処理 end 上のように分岐の条件に対称性がある場合はif elseを使う。…

Railsのja.ymlでEnumの内容が被ったら

Enumの内容がかぶると、重複エラーになる。 You tried to define an enum named "monthly" on the model "Room", but this will generate a instance method "monthly?", which is already defined by another enum. こういうときはprefixとsuffixをつけて区…

Decorator Helper 違い

Helperに書かれたメソッドをDecoratorに切り出そうとして、「引数どうするんだっけ」と思った。 Helperだけ、Decoratorだけ0-1で書くときはそれほど迷わないことでも、リファクタリングなど2つ同時に作業するとき意外と迷う。 改めてまとめてみた。 読んだも…

Ruby / Railsで日付と日付の差分を求める

読んだもの www.rubylife.jp 学んだこと Timeクラスか、Dateクラスを使う。 時間まで使いたい場合はTimeクラス、日付だけ使いたい場合はDateクラスを使う。 2つのクラスのオブジェクトに対し、「-」を使って差を取得する(引き算ぽい)。 やりたかったこと …

なぜRailsのpartialではインスタンス変数を参照しない方がいいのか

読んだもの kadoppe.com 学んだこと なぜpartialではインスタンス変数を参照しない方がいいのか? コントローラで何を用意すべきか明らかでなくなるから インスタンス変数を介して、partialは呼び出し元のテンプレートだけでなくコントローラとも結びついて…

『Ruby on Rails5 アプリケーションプログラミング』 読んだメモ

クエリメソッドはその場でDBにアクセスしない(遅延ロード) メソッドチェーン(連鎖して呼び出す)が可能 生成されたクエリはPumaのコンソールに吐き出される whereメソッドを使うと、プレイスホルダー(任意のパラメータを引き渡せる)が使える 動きはfind…

Active Decoratorメモ

読んだもの qiita.com GitHub - amatsuda/active_decorator: ORM agnostic truly Object-Oriented view helper for Rails 3, 4 and 5 学んだこと テストのとき、ちょっと変わった書き方をする。 →ActiveDecorator::Decorator.instance.decorate(model_instan…

「使えるRSpec入門・その1 」読んだメモ

読んだもの qiita.com 学んだこと 原則として「1つの example につき1つのエクスペクテーション」で書く テストの保守性が良くなるため letで宣言できる変数 **インスタンス変数の例** let(:user) { User.new(params) } # 同じ意味 user = User.new(params) …