Rails関連のことを調べてみた2019年11月23日

Rails関連のことを調べてみた2019年11月23日
目次

【Guard】自動生成されるGuardfileで監視・実行されるファイルは結局どこなのか、ソースコードから読み解いてみた

## はじめに
RailsアプリでRSpecを自動で走らせるためにGuardを導入したのですが、その設定ファイルである`Guardfile`について理解を深めたかったのでまとめてみました。

踏み込んでいくうちにソースコードまで読むことになり、メタプログラミングの勉強にもなりました。

この理解で`guard-rspec`や`guard-rubocop`で自動生成される内容にアレンジが加えられるようになったので、生産性が上がりそうです:point_up:

ベースとして、こちらの記事を参考にさせて頂きました。
[rubyのGuardとRSpecをRailsを使わない環境でつかう | 大石制作ブログ](https://blog.s0014.com/posts/2017-05-24-guard/)

## この記事が役に立つ方
– 自動生成されるGuardfileを自分ではアレンジ出来ない方

## この記事のメリット
– 自動生成されるGuardfileではどういう設定がされているのかが分かる
– Guardfileを自分用にアレンジ出来るようになる。

## 環境
– macOS Mo

元記事を表示

【Rails】パーシャルを使う

# パーシャルのメリット
あちこちで使う部品を定義しておけば、
その部品を呼び出すだけで同じViewを出力できるようになる。

## パーシャルファイルの作成
viewディレクトリに作成
`_任意の名前.htil.erb` <=`_`先頭にアンダースコアをつける。 #### 繰り返し使用する部分テンプレート作成 ```form.html.erb <%= form_for @board do |f| %>

<%= f.label :name, '名前' %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :title, 'タイトル' %>
<%= f.text_field :title, class: 'form-control' %>
Railsでvuetifyを使えるようにする初期設定

## 前提条件
railsアプリケーションで、ブラウザ上にvueコンポーネントの表示が出来ている状態。
[こちら](https://qiita.com/cohki0305/items/582c0f5ed0750e60c951)の記事を参考に環境構築するといいかも

### まずはもろもろインストール
“`:terminal
$ yarn add vuetify
$ yarn add material-design-icons-iconfont
$ yarn add @mdi/font
“`

### ルートのテンプレート
“`app/views/root/index.html.slim
= javascript_pack_tag ‘main’
= stylesheet_pack_tag ‘main’
“`

### jsファイルにインポートさせる
“`app/javascript/packs/main.js
import Vuetify from ‘vuetify’
import ‘material-design-icons-iconfont/dist/material-de

元記事を表示

Rails 6,Ruby 2.6.2のローカルアプリ作成方法(mac)

**ローカル環境にrubyやmysqlがインストールしてあることが前提です。**

“`
$ mkdir sample-app
$ cd sample-app
$ bundle init
“`

“`:Gemfile
# frozen_string_literal: true
source “https://rubygems.org”

git_source(:github) {|repo_name| “https://github.com/#{repo_name}” }

gem “rails”, “~>6”
“`

“`
bundle install –path vendor/bundle
“`

“`
bundle exec rails new . -B -d mysql –skip-turbolinks
“`
– -Bはbundle installを行わないようにする
– -dはデータベースの指定(今回はmysql)

必要なgemをgemfileに追記
“`
$ bundle install
“`

## このエラーが発生した場合
![https___

元記事を表示

rails javascript/jqueryの実装 メソッド gem

覚えることが多いので覚えた内容の備忘録を書こうを思います。

# rails-ujs

基本rails5.1以降にかかれている記述ですがその意味は

Ajax の送受信の “送” の部分を JavaScript で実装せずにやってくれるライブラリです。

Rails 5.1 から導入された form_with を使ってフォームを構築し
form でデータを送った後のレスポンスだけを JavaScript で書けば良くなります。

“`js:application.js
//= require rails-ujs
“`

# FormData
formタグ内の要素のデータをオブジェクトにしたもの
inputに入力された情報が、javascriptのオブジェクトとしてキーバリュー形式で表される。

new FormData(フォーム要素)とすることでFormDataを作成できます。

“`js
$(function(){
$(‘#new_comment’).on(‘submit’, function(e){
e.preventDefault();
var fo

元記事を表示

既存のRailsアプリにReactを導入する方法

#概要
yarn、Webpacker、react-railsを使います。

#1.Yarnのインストール
nodeが入っている場合

“`ruby:
$brew install yarn –without-node
“`
nodeが入っていない場合

“`ruby:
$brew install yarn
“`

#2.Webpacker をインストール

Gemfileにwebpackerを追加します。

“`ruby:Gemfile
gem ‘webpacker’
“`

bundle(bundle install)を実行。
インストールが終わったら、以下を実行。

“`ruby:
$bundle exec rails webpacker:install
“`

#3.既存アプリへReactを導入する

“`ruby:
$bundle exec rails webpacker:install:react
“`

application.html.slimに以下追記

“`ruby:application.html.slim
= javascript_pack_

元記事を表示

【Rails】Font Awesomeインストール後 Sass::SyntaxError

#あなたのブラウザにはこのようなエラーが出ますか?
3b2620fc1e118d49b0123c2a801f5f87.png

**Sass::SyntaxError in ~~~#index**
おかしいな。お手本見て入れたし、現状のソースをお手本と比べても問題はなさそうだゾ。

#原因?
海外サイト勢「サーバー再起動してみそ」

再度 “`rails s“`

「えっ」

問題なく起動。

![syokuji_computer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480700/5cd944c3-a4d3-78f6-7d86-433a2c6dcdf6.png)

#参考記事
“`@import ‘font-awes

元記事を表示

プログラミング学習5日目

今現在わからないことについて

ruby on railsの
バグ修正の問題で、
何が原因か判断できない。

その理由はMVCの流れを理解できていないから。
細かいルール(どのように記述するかなど)

改善策としては、
これから先の練習問題をときつつ
どんなバグが多いのか体感して行く。

それで自分の理解できていない部分を
細かく洗い出す&よく出るバグの修正を重点的に出来るようにする。

今やるべきことは
問題をといて、自分の苦手を知ること。
どんなバグが多いのか知ること。

わからないことは人に聞くこと。ぐぐること。以上!

元記事を表示

5日目の午後。

今日学んだことは
ハッシュ、引数、バグ修正の考え方。

ハッシュについてわからないことが多かったので、すっきりした。

ハッシュとは箱であり、配列にきれいに並んで入っている。
一つ一つに番号がある。
ハッシュから取り出すには、
ハッシュ名[:キー名]
ハッシュに入れるには
ハッシュ名[:キー名]=バリュー名

である。

元記事を表示

zeitwerkの uninitialized constant XXX (NameError)エラーについて

# 症状

Rails6で本番環境でrailsを立ち上げようとしたら以下のエラーに遭遇した。

“`shell
raceback (most recent call last):
53: from bin/rails:4:in `


52: from /usr/local/bundle/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `require’
51: from /usr/local/bundle/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:291:in `load_dependency’
50: from /usr/local/bundle/gems/activesupport-6.0.0/lib/active_support/dependencies.rb:325:in `block in require’
49: from /usr/local/bundle/gems/bootsnap-1

元記事を表示

すぐに役立つRails tutorial メモ 「デバッグ」

##何かわけのわからない挙動やエラーが見受けられた時に役に立つのがdebug メソッド

“`
class UsersController < ApplicationController def show @user = User.find(params[:id]) debugger end def new end end ``` **debugger**をshowアクションの中に入れることで、ターミナルにてbyebugプロンプトを確認することができます。 debugをやめたい時にはCtrl-Dを押すとプロンプトから抜け出すことができます。 ***debugメソッドを使うにはbyebug gemをインストールしている必要があります!***

元記事を表示

Railsのヘルパーメソッド

# Railsのヘルパーメソッド備忘録

## 開発環境
– Ruby2.6.3
– Rails6.0.1

## ヘルパーメソッド

### simple_format
**役割**

– 改行等のデータをHTMLへ渡す

**使用例**

“`ruby

<%= simple_format(@board.body) %>

<%= @board.name %>

“`
`<%= simple_format(モデルから渡されたデータ) %>`

元記事を表示

やさしい図解で学ぶ モデル マイグレーション その1

今回は[やさしい図解で学ぶ 中間テーブル  概念編](https://qiita.com/ramuneru/items/db43589551dd0c00fef9)のつづきとして、

実際に中間テーブルを作成するほか、モデルとマイグレーションについてRubyのフレームワークであるRailsを用いて学んでいきましょう。

## ⭐️テーブル作成に必要なファイル

DB設計が終わったら、
「DBのデータを取り扱うファイル = **モデル**」
「テーブルの設計図となるファイル = **マイグレーション**」を作らなければいけません。

まず、テーブル作成時にとりあえず必要なファイルは

Error: net::ERR_CONNECTION_REFUSED : #Docker + #Rails 環境で public ディレクトリにあるファイルを headless Chrome で HTML PDF 変換しようとした時のメモ

# NOTE

– curl では rails の public な URL に接続できる状態。
– rails の publiic directory に HTML file を設置して、headless chrome からアクセスしてPDF変換しようとしたとき。( http://localhost:3000/some.html )
– chrome では localhost が 127.0.0.1 に割り当てられておらず、localhost が使えない場合がありそうだが詳しくは未確認。 http://127.0.0.1:3000/ にアクセスさせると良いかも。
– 最初 node + puppeter を通して実行させていたが、 どうやら chrome 本体の処理で問題が起きていそうだった。
– http://127.0.0.1:3000/some.html に接続しても動かず `Error: net::ERR_CONNECTION_REFUSED` が起こることがあった
– docker container で hostname -i した結果のIPアドレスに対して chrome

AWS Cloud9 で「現場で使える Ruby on Rails 5速習実践ガイド」の rspec 導入時にハマったところ

## Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary

Chapter5-8の最後で、初めてrspecを実行すると、以下のエラーが表示された。
“`Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary“`

Chromeが入っていないと言われているので、以下のコマンドを実行する。
“`curl https://intoli.com/install-google-chrome.sh | bash“`

### 参考

– [AWS Cloud9でCapybara+Selenium+Chrome設定時のエラーとその対処法について[ Everyday Rails 6章 ]](https://kuracux.hatenablog.jp/entry/2018/12/30/182617)
– [「Selenium::WebDriver::Error::WebDri

タイムゾーンの設定

# アプリケーションのタイムゾーンを日本時間に設定する。

### 現状は..協定世界時の現在時刻(UTC/UTC+0000)表示となっている。
スクリーンショット 2019-11-22 17.08.07.png

### 日本時間..日本標準時の現在時刻(JST/UTC+0900)へ変更したい。

### どこを変えるのか?
`root/config/application.rb`ディレクトリの中に、`config.time_zone = ‘Tokyo’`を記述する。

“`root/config/application.rb
require_relative ‘boot’

require ‘rails/all’

# Require the gems listed in Gemfile, includi

Mysql2::Error: Column ‘created_at’ in where clause is ambiguousのエラーハンドリング

railsのコントローラーで検索機能を実装していて、突然エラーが出るようになったので発生原因と解決策をメモします。
ビューやリレーション部分は省略します。

## 実装したこと
日付検索機能を実装し、さらにグループでも検索できるように機能を追加

“`sample_controller.rb
def add_query_by_search_params(base_query)
added_query = base_query
added_query = added_query.where(‘created_at >= ?’, Time.zone.parse(params[:from_day])) if params[:from_day].present?
added_query = added_query.where(‘created_at <= ?', (Time.zone.parse(params[:to_day]) + 1.day)) if params[:to_day].present? #ここから追記 if params[:gro

すぐに役立つRails tutorialのメモ 「rails console でのデータ変更を反映させない方法」

##rails console –sandbox
“Any modifications you make will be rolled back on exit” (ここで行ったすべての変更は終了時にロールバックされます) というメッセージにわかりやすく示されているように、コンソールをサンドボックスで起動すると、そのセッションで行ったデータベースへの変更をコンソールの終了時にすべて “ロールバック” (取り消し) してくれます。(引用:第6章 rails tutorial)

https://railstutorial.jp/chapters/modeling_users?version=5.1#cha-modeling_users

Ruby on Rails チュートリアル習得時の備忘録 (処理の流れ、MVC, Gem, bundler, フォルダ階層・・・)

Railsチュートリアルの冒頭で概念的な説明があまりなくQiitaの情報も断片的で
チュートリアルの理解に苦しんだため、自分なりに整理した資料です。
独学だとよくわからないコマンドを連打するよりざっくりまずは全体感を理解した方が頭の中にすんなり入るはずと思うのは私の気のせいですかね…

〜処理の流れ〜
Browser -> Route(config/routes.rb) <-> Controller <-> Model <-> Database
Browser <- View <-> Controller

〜MVCとは〜
model(s): データベースの操作
view(s): UI処理
controller(s): models, views の連携、
 viewsのディレクトリ名と結びつき、
 defで定義するアクションは
 viewsディレクトリ以下のファイル名と紐付き

rails 主要コマンド一覧: https://railsguides.jp/command_line.html
 ※コマンドが短縮されることがある generate が g

〜Gem, Gemを管理す

Rails チュートリアル 第2章 Destroy できない (IE11)

# はじめに
「Rails チュートリアル 2.2.1 ユーザーページを探索する」でハマったので情報共有します。
https://railstutorial.jp/chapters/toy_app?version=5.1#sec-a_user_tour

# 状況
`rails new toy_app` して,scaffold でユーザーリソースを作っただけなのに,ユーザーを削除しようと[Destory]リンクをクリックしてもユーザーが削除されないことがあります。

チュートリアルには,次のように書いてあります。
> 図 2.10の [Destroy] リンクをクリックするとユーザーが削除され、indexページのユーザーは1人だけになります (もしこのとおりにならない場合は、ブラウザのJavaScriptが有効になっているかどうかを確認してください。Railsでは、ユーザーを削除するリクエストを発行するときにJavaScriptを使っています)。

GoogleChrome では削除できました。
Firefox でも削除できました。
削除しようとすると「Are you sure?」って