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

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

【Rails】RuboCopの基本的な使用方法と出力の見方

## はじめに
RubyのLinterツールであるRuboCopについて以下内容をまとめました。

– インストール方法
– 基本的な使用方法
– 出力の見方
– 規定の設定(他記事へのリンク)

保守性が高く、キレイなコードを書けるようになっていきたいです:writing_hand:

## この記事が役に立つ方
– RuboCopを使ったことがない方

## この記事のメリット
– RuboCopが使えるようになる
– 最低限出力が読めるようになる

## 環境
– macOS Mojave バージョン10.14.6
– シェル:zsh
– Ruby 2.6.3
– Rails 6.0.1
– RuboCop 0.76.0

## RuboCopとは?
公式サイトはこちらです。
[Home – RuboCop: The Ruby Linter that Serves and Protects](https://rubocop.readthedocs.io/en/latest/)

スクリーンショット 2019-11-19 0.17.16.</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>Rails</div>
<div class='tag-cloud-link'>初心者</div>
<div class='tag-cloud-link'>RuboCop</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/terufumi1122/items/ad55bf8713c0df053f58'>元記事を表示</a></div>
<h3 id=Railsでポートフォリオを作ってみよう! vol.4 (RSpec・FactoryBot編 後編)

前回までで一通りの導入から設定は完了した為、今回はテストの実装を行う。
今回はRailsTutorialの流れでは第6章を実装するが、簡略しているところがほとんどなので、もっと細かく知りたい人は調べてみてほしい。

#テストの実装
テストを実装する。第6章はUserモデルのバリデーションについてのテストが多いためそこをピックアップして実装する。

## FactoryBotを使ってみよう
前回導入を行なったFactoryBotを使い、テストユーザーのセットアップを行う。

“`
$ docker-compose run web bin/rails g factory_bot:model user
“`

を実行後user.rbが作成されるため

“`spec/factories/users.rb
#現在のFactoryBotのVerでは以下の書き方は非推奨となっている
#後ほど詳しく説明する
FactoryBot.define do
factory :user do
name “ExampleUser”
nickname “Example”
seq

元記事を表示

erbで、複数行コメントアウト

## コード

“`erb
<% =begin %>

コメントアウトされている

<% =end %>
“`

## 説明
=の部分を左にくっつけないといけない。
忘れてしまう事があったので、備忘録として。

元記事を表示

【AWS EC2】`find_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)

#あなたのターミナルにはこのようなエラーが出ていますか?
“`console
[ec2-user@ip-XXX-XX-XX-XXX xxxxxx]$ bundler -v
Traceback (most recent call last):
2: from /home/ec2-user/.rbenv/versions/2.5.1/bin/bundler:23:in `


1: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path’
/home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
“`

#入力するコマンド
“`console
$

元記事を表示

Railsチュートリアル学習総まとめ

よくわからなくなったり
こんがらがってしまう部分をメモしておけば

あとで検索して調べられる。

後半は前半で作った
メソッドが何をしているのかを書いておけば
私の頭とこのメモで補完できる。

ルーティング

メソッド

元記事を表示

Railsを使って、イベントのイマココを管理するサービスをリリースした話

# はじめに
サラリーマンをしている傍、自宅で個人開発をしている「[にゅ〜ぶる(@newburu)](https://qiita.com/newburu)」です。
新しいサイトを立ち上げるたびに、何かしらアウトプットしていこうと思い、
「[BLOG](http://blog.newburu.com/)」と、ここQiitaに投稿していきます!

# こんなサービス作りました
イベントの進捗(イマココ)を管理できるサービスを作りました❗️❗️
その名も、「[イマココアラート](https://imakoko-alert.com/)」
よかったら使ってみてくださいね❤️

元記事を表示

ストックすることの大切さと、一歩踏み出す大切さ

# はじめに
サラリーマンをしている傍、自宅で個人開発をしている「[にゅ〜ぶる(@newburu)](https://qiita.com/newburu)」です。
新しいサイトを立ち上げるたびに、何かしらアウトプットしていこうと思い、
「[BLOG](http://blog.newburu.com/)」と、ここQiitaに投稿していきます!

※書いていたのをすっかり忘れて半年たって公開…笑

# 作ったサイトの紹介
今回作ったサイトは、こちら。
 「[JobLvマネージャー](https://joblv-manager.herokuapp.com/)」です。

自分のJob(職業)を管理、LvUpをしながら、Twitterと連携(現時点では、名前変更)することが出来ます。

スクリーンショット 2019-04-19 22.22.23.png[Rails] VSCodeでSolargraphを使おうとしたら、Bundlerが無いというエラーが出たときの解決策

# 環境
+ VSCode v1.40.1
+ (extension) Ruby 1.1.2
+ (extension) Ruby-Solargraph 0.21.1
+ Ruby 2.5.1
+ rbenv 1.1.2
+ Rails 5.2.2.1

# 状況
普段はGoを書いているのですが、急遽別案件でrailsを書くことになり、VSCodeで開発環境を構築しようとしました。
補完のために「Ruby-Solargraph」というVSCodeの拡張を入れたところ、

“`
/Users/me/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/dependency.rb:312:in `to_specs’: Could not find ‘bundler’ (1.16.3) required by your /Users/me/proj/Gemfile.lock. (Gem::MissingSpecVersionError)
To update to the lastest version installed on your

元記事を表示

学習したこと

scssの子要素は
__より前は&で省略できる
その代わりに親要素の{}で囲ってあげないといけない

DMR
insert 登録
updateデータの更新
deleteデータの削除
selectデータの操作

制約のバリテーション
not null制約 
一意性制約
主キー制約
外部キー制約
エンティティ = テーブル
カラム エンティティの属性

主キー レコードを判別する識別子
devise のヘルパーメソッド
before_action :authenticate_user! コントローラーに設定して、ログイン済ユーザーのみにアクセスを許可する
user_signed_in? ユーザーがサインイン済かどうかを判定する
current_user サインインしているユーザーを取得する
user_session ユーザーのセッション情報にアクセスする

require メソッドを利用することで、引数に設定した key の 値だけを取得することができます。

require メソッドを利用することで、引数に設定した key の 値だけを取得することができます。

元記事を表示

Ruby on Railsの要点【ディレクトリ、コマンド編】

Railsチュートリアルを終えたので、学んだことを整理していきたいと思います。
##ディレクトリ構成
よく使うファイル、ディレクトリだけを抜粋します。

“`
app
├── assets/ # 画像ファイル、CSS、Javarcriptなど
├── controllers/ # コントローラー
├── helpers/ # ヘルパー関数
├── mailers/ # メール送信の設定
├── models/ # DBの各テーブルに紐づいた設定(関数、バリデーションなど)
├── uploaders/ # ファイルアップロード周りの設定
├── views/ # ビューファイル
config
├── routes.rb # ルーティングの設定
db
├── migrate/ # DBの構成変更に関するファイル
├── seeds.rb # DBに入れるデータ
public/ # 404エラーページなど
te

元記事を表示

Rails は IN 句に NULL を入れて良いのか?

つまり `User.where(code: [1, 2, nil])` なんて書き方は大丈夫なの?

## 結論

配列なら大丈夫です、Railsが勝手にやってくれます、速度面だけは少し注意
サブクエリは駄目です

## 不安な理由: SQLではNULL比較ができない

SQL では `IS NULL` を使う必要があり IN 句で NULL は正しく動きません

“`sql
WHERE code IN (NULL) — NG: code が NULL のレコードが取れない
WHERE code IS NULL — OK
“`

## 確認: 実行SQLを出力する

全部 IN 区に入れず `OR code IS NULL` と勝手に NULL 考慮 SQL を作ってくれます
楽だけど `where(code: [1, 2, nil])` の実装からは認識しにくい `OR` が生えてる
速度のほうは大丈夫?

“`ruby
> User.where(code: [1, 2, nil]).to_sql
=> “SELECT `users`.* FROM `users`

元記事を表示

Rails6のWebpackにjQueryとBootstrapを導入する手順

Rails6からWebpackが標準導入されるようになりました。
今までjQueryやBootstrapを導入するには、それぞれのGemをインストールして`app/assets/javascripts/application.js`や`app/assets/stylesheets/application.scss`で呼び出すという手順でしたが、これからはWebpackを使って管理していくのが正しい道のようです。

#前提
Rails6を使っている想定なので、Webpackerのインストール手順は省略します。

#諸々のインストール
以下のコマンドでインストールします。

“`shell
$ yarn add bootstrap jquery popper.js
“`

正常にインストールされたかは`package.json`で確認できます。

#jQueryの導入手順
`app/javascript/packs/application.js`以下を追記します。

“`javascript
require(“jquery”)
“`

`config/webpack/environ

元記事を表示

railsで複数モデルを保存するときにall?ではなくinject

Railsで複数モデルを同時に保存する必要がある際、トランザクション内で

“`rb
ActiveRecord::Base.transaction do
保存成功時の処理 if models.all?(&:save)
raise “error”
end
“`

みたいに書きたいことがあったが、all?はある要素の`save`がfalseを返した場合、それ以降の要素についてsaveメソッドを実行しない。saveメソッドの実行によりエラーメッセージを取得したいような場合、全ての要素について実行してもらう必要がある。今回は以下のように書いた。

“`rb
ActiveRecord::Base.transaction do
保存成功時の処理 if models.inject(true){|result, elem| result && elem.save }
raise “error”
end
“`

もっと良い書き方があれば是非ご指摘ください。

元記事を表示

【初学者】Gemを使用せず画像投稿機能を実装する【Rails】

Progate修了後レベルを対象にした記事になります

#画像投稿機能でつまづきました。
Progateで画像情報をアップデートする(既に作成されたユーザー情報のプロフィール画像を変更する)ということは学べました

しかし「新規記事投稿時に画像を添付する」ことは学べなかったので、実装時につまづいてしまいました。

##Gemは使用しない
Gemを使用すれば早いかもしれませんが、エラーから目を背けては基礎知識の習得ができないと思い使用しませんでした。

###画像添付しない投稿機能
“`ruby:view
<%= form_tag("/posts/create") do %>



<%end%>
“`

“`ruby:post_controller
def creat

元記事を表示

とりあえずこれだけ。Rails ToDoアプリ作成【CRUD】勉強会 #1

# 初心者用Railsアプリ練習帳

勉強会を開き、Rails初学者に日頃教えています。初心者向け勉強回資料用もかねて作成。
ある程度基礎を学習していると、読みながら真似はできるけど、いまいち全体の知識がつながっていないので自分で作ることができない…

そんな状態になりがちでした。

## 対象者
– Railsでなんでもいいからの教材をやった人
– Rails基礎はなんとなくわかってきた人
– Railsで自分でアプリ作るのはまだ無理そうという人
– Rails以外のフレームワークならわかる人

**※ 正確さより概念とアプリ作成の流れを重視します。**

## コンセプト
他にも言っている方がいますが、勉強会で教えている経験から初学者が同じ教材を何周もするのは上達が遅いように感じています。

知識はあるけど自分で一から作るのは無理そう。
エラーが出て対処出来ない

ということになりがちでした。

こういう場合、実際に手を動かし、自分の頭で考えて簡単なアプリを作る必要があるけど、

– いきなりだと何を作ればいいのかわからない…
– 一連のアプリを作っていく順番がわからない…

元記事を表示

dockerでrails + PostgreSqlの開発環境を作る時に躓いたところ

# 開発環境
+ windows 10 Education
+ Docker version 19.03.4
+ ruby 2.6.5 (docker images)
+ postgres 12.0 (docker images)
+ nginx 1.17.5 (docker images)

# 実行の流れ
“`
# docker環境構築
C:\Users\masak\Desktop\check> docker-compose build

# yarn install
C:\Users\masak\Desktop\check> docker-compose run app yarn install

# database create
C:\Users\masak\Desktop\check> docker-compose run app rails db:create

#dockerコンテナ起動
C:\Users\masak\Desktop\check> docker-compose up
“`

#問題と参考先
### dockerの設定でC driveが共有されてない

元記事を表示

Rails6 のちょい足しな新機能を試す106(カラム名編 Part2)

# はじめに

Rails 6 に追加された新機能を試す第106段。 今回は、 カラム名編 Part2です。
Rails 6 では、 `pluck` や `order` で指定するカラムが、別名を持っている場合や引数一つまたは0の関数の場合も `Arel.sql()` で囲いなさいという警告が出なくなりました。
なんでもかんでも警告を出すより、本当に問題になりそうな場合に限定して警告を出す方が、警告の効果があるだろうということのようです。

この変更に伴い、 Rails 5.2.3 で出ていたRails 6.0 では禁止となると `DEPRECATION WARNING` が出ていたところが、Rails 6.0 で禁止にならず、Rails 6.1 に持ち越されました。

Ruby 2.6.5, Rails 6.0.0, Rails 5.2.3 で確認しました。
また、データベースは、 PostgreSQL 12.0 を使っています。

“`shell
$ rails –version
Rails 6.0.0
“`

今回は、 [カラム名編]() をそのまま使って `rails

元記事を表示

Ruby on Rails チュートリアル第9章 発展的なログイン機構

#発展的なログイン機構
第8章の記事ではでは一時cookieによるログイン機構を実装したが、本記事ではユーザーのログイン情報を記憶しておき、ブラウザを再起動した後でもすぐにログインできる機能 (remember me) を、永続cookieを使って実装していく。

##Remember me機能
 本節では、ユーザーのログイン状態をブラウザを閉じた後でも有効にする [remember me] 機能を実装していく。この機能を使うと、ユーザーが明示的にログアウトを実行しない限り、ログイン状態を維持することができるようになる。

###記憶トークンと暗号化
 前回は、Railsのsessionメソッドを使ってユーザーIDを保存したが、この情報はブラウザを閉じると消えてしまう。本節では、セッションの永続化の第一歩として記憶トークン (remember token) を生成し、cookiesメソッドによる永続的cookiesの作成や、安全性の高い記憶ダイジェスト (remember digest) によるトークン認証にこの記憶トークンを活用する。
 sessionメソッドで保存した情報は自動的に

元記事を表示

Cloud9にてRailsプロジェクトのDBを最初からMySQLにしておく方法

Cloud9にて新規プロジェクトを作成する

“`ruby:console
$ rails new project -d mysql
“`
エラーが出た場合は、エラー文に下記のようなコマンドが出てくるのでコンソールで走らせる

“`ruby:console
$ gem install mysql2 -v ‘0.4.10’ –source ‘https://rubygems.org/’
“`
プロジェクトのルートディレクトリに移動

“`ruby:console
$ cd project/
“`

“`ruby:console
$ sudo yum install mysql-devel
“`
バンドルをインストール

“`ruby:console
$ bundle install –without production
“`
mysqlを起動

“`ruby:console
$ sudo service mysqld start
“`
データベースを作成してマイグレートする

“`ruby:console
$ rake db:create
$ rake

元記事を表示

【rails】Mysql2::Error::ConnectionError【凡ミス系】

#あなたのブラウザではこのようなエラーが出ていますか?
“`
Mysql2::Error::ConnectionError
Access denied for user ‘root’@’localhost’ (using password: YES)
“`
484f05f97644782bbee9a9ebc0484481 (1).png

#修正した箇所
サーバーデプロイでうまくいかなく、いろんな方法をこねくり回していて、
その残留コードが残ってました。password:に設定したpassを削除したら再度見れるようになりました。

“`database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username

元記事を表示

OTHERカテゴリの最新記事