Ruby on Rails

Railsのpathとパラメータのはなし

ほんとに今更なんですが、Railsのpathとパラメータにまつわる学習ができたので覚書として。 blogにcommentするアプリを作ってみたら viewsファイルで <%= link_to '削除', blog_comment_path(blog, comment), method: :delete %> として、コメントの削除リン…

Rails5で検索機能を実装してみた

以前からやってみたいと思っていた、検索機能を実装してみました。 環境 ruby 2.3.1 rails 5.1.5 概要 usersテーブル(カラムはname、emailだけ)に対し、nameであいまい検索。 コード User.rb class User < ApplicationRecord validates :name, presence: t…

UndefinedFunction: ERROR

自分の覚書。 Railsのエラーメッセージを和訳してみた。 PG::UndefinedFunction: ERROR: operator does not exist: ? unknown LINE 1: SELECT "users".* FROM "users" WHERE (name like ? '%tada%') ^ HINT: No operator matches the given name and argumen…

Sprockets::FileNotFoundエラー

自分の覚書。 他の人のコードをGithubからcloneして実行したところ、以下のエラー。 Sprockets::FileNotFound - couldn't find file 'jquery/dist/jquery.js' with type 'application/javascript' 解決法 以下を実行。 yarn add jquery これによって、node_m…

ArgumentErrorが出たぞ!

自分の覚書。 あるアプリを作っていて、以下のエラーが出た。 ArgumentError in Posts#new First argument in form cannot contain nil or be empty form_forの引数である「@post」がnilだよ〜というエラーでした。 よくよく調べたら、コントローラでインス…

uninitialized constant HogeControllerが出た

自分の覚書。 友人から依頼されて簡単なアプリを作ってます。 ルーティングを設定して起動して localhost:3000 をたたいたら <原因> ルーティングで root 'event#index' としていたけど、コントローラ名を複数形にしたら改善^^ こんな感じ。 root 'events#…

本番環境でrakeコマンドを実行する方法

自分の覚書。 本番環境(AWSなど)でrakeコマンドを実行するには、末尾に「RAILS_ENV=production」をつける。 たとえばrake routesを実行するには、 rake routes RAILS_ENV=production とする。

rake db:migrateでSystemStackError: stack level too deep発生

自分の覚書。 他の人のコードをクローンして、bundle exec rake db:migrateを実行したところエラー発生。 rake aborted! SystemStackError: stack level too deep このあと、延々と /usr/local/rvm/gems/ruby-2.4.0/gems/activesupport-4.2.3/lib/active_sup…

bundle installとbundle update、gemfileとgemfile.lockのつながりを解いてみた

自分のあたまを整理するために書きます。 まずgemfileから 必要なgemを自分でgemfileに追記します。 bundle installを実行する bundle install するとbundlerが各gemの依存関係を調べた上で、 各gemのバージョンを調整してインストールしてくれます。 その結…

undefined method for nil:NilClassってなに?

これはとてもよく出会うエラーですね〜。 私も毎日のように出て来て悩まされましたTT undefined method `name' for nil:NilClass だったり、 undefined method `id' for nil:NilClass など。 学びたての頃はさっぱりわからないエラー。 で、どういう意味なの…

バリデーションエラーと@messegesの動きを見てみた

例えば、blogsテーブルにcontentというカラムを用意。 models/blog.rbで class Blog < ActiveRecord::Base validates :content, presence: true end として、contentは必須とする。 ここでrails cを実行。 irb(main):001:0> @blog = Blog.new => #<Blog id: nil, content: nil, created_at: nil, updated_at: nil> このまま</blog>…

同じgemが複数あることを知らせてくれたメッセージ

自分の覚書。 今日、フツーにbundle installを実行したら、 できたはできたんだけど、見知らぬメッセージ付きだった。 それはこちら。 Your Gemfile lists the gem dotenv-rails (>= 0) more than once. You should probably keep only one of them. While i…

form_for はどんなものかをまとめてみた

自分の覚書です。 <%= form_for(@blog) do |f| %> <%= f.label :本文 %> <%= f.text_field :content %> <br> <%= f.submit '投稿'%> <% end %> というコードの場合、HTMLでは、 <label for="blog_本文">本文</label> <input type="text" name="blog[content]" id="blog_content" /> <br> <input type="submit" name="commit" value="投稿" /> となり、画面表示は となる…

herokuでデータベース上のテーブルを確認する方法

自分の覚書です。 $ heroku pg:psql

createかupdateかを自動判断するform_forの動きを検証してみた

form_forメソッドの動き form_forメソッドは、以下のような動きをします。 引数がレコードに存在しない場合、createアクションへ送信 引数がレコードに存在している場合、updateアクションへ送信 これはform_forメソッドが自動的に判断してくれています。素…

GitHubからcloneしてpushするまでの流れ

自分の覚書です 該当のコードをGitHubからローカルにclone clone後、gemを取り入れるために、bundle installを実行 cloneでは、git上のコードを入手するだけなので、「bundle exec rake db:create」でデータベースを構築する 「bundle exec rake db:migrate…

gitについての覚書

自分があやふやだったところをまとめました 最初に作成するブランチは「master」という名前がつく リモートリポジトリの名前を登録する(公開鍵認証方式を利用する場合) git remote add(リモートリポジトリの名前)(SSHプロトコルURL※) ローカルリポジト…

データベース変更後に効果的なheroku restart

自分の覚書。 テーブルやカラムの追加など、heroku上のデータベースに何らかの変更があった時は、 マイグレーション処理を実行した後で、heroku restartをするといいみたい。 実際、マイグレーション処理でカラムを追加したにも関わらず、 heroku上では認識…

vagrantで共有フォルダの認識がされなくなった場合

仮想環境で作業をする場合、ローカル上(実際のPC上)のフォルダと、仮想環境上のフォルダとをVagrantfileによって共有しますが、 ある日突然、その共有が反映されなくなり、作業ができなくなりました(@_@) 試行錯誤した結果、改善したので、経緯をまとめま…

herokuのリモート設定で「Not a git repository」エラー

herokuのリモート設定での出来事を覚書として残します。 1)Vagrantで以下のコマンド入力 git remote add heroku https://git.heroku.com/(自分のURL).git 2)すると以下のエラー発生 fatal: Not a git repository (or any parent up to mount point /home…

RailsでAPIを実装するgem「her」を試してみた

WebAPIが簡単にできるherを使ってみたので、覚書として残します。 ※APIとViewsが存在することを前提にしています ①gemfileにgemを追加し、bundle installを実行 gem 'her' ②config/initializers配下に「her.rb」を追加し、以下のようなコードを書く。 Her::A…

SendGridとSMTPエラーについて

Webアプリにメール送信処理を実装するには、メール転送処理を実行するために、SMTPサーバーを用意する必要があります。しかし、自前で用意するには手間がかかるので、クラウドメール送信サービスである「SendGrid」を使ってみました。今回は、アプリのユーザ…

デバッグに必要な6つのポイント

自分の覚書。 ブラウザ上のHTMLソースを確認する chromeの検証ツールでHTTP通信を確認する HTTPサーバーログで確認する ルーティングを確認する(rake routes) Ruby実行モードで確認する(rails c) SQL実行モードで確認する(rails db) 詳細は後日。

rake db:create と rake db:migrate と rake db:reset と rake db:migrate:reset

自分の覚書。 ■rake db:createconfigディレクトリの中にあるdatabase.ymlを読み込み,そのファイルに基づいてデータベースを作成する ■rake db:migratedb/migrateディレクトリの中にあるマイグレーションファイルに基づいてデータベースにテーブルを作成する…

authenticate_user!メソッド

自分の覚書。 authenticate_user!メソッドは、Deviseが提供しているメソッドで、これを使用してログイン有無のチェックができる。 class BlogsController < ApplicationController before_action :authenticate_user! 省略 こうすることで、まずログインして…

placeholderとは

自分の覚書。 placeholderとは、入力フォームに、入力すべき内容を仮に記しておくこと。 たとえばこんな感じ。 <h2>サインアップ</h2><%= f.text_field :email, placeholder: "メールアドレス" %> とすることで、以下のような画面になる。