Ruby関連のことを調べてみた2020年09月07日

Ruby関連のことを調べてみた2020年09月07日

Rails6で標準搭載されたwebpackerでハマる

## 発端
「ん?こっちで見ましょうか?」

から、なかなか気づかずに恥ずかしいハマり方してたので備忘録。

npmやらyarnなどのお話はたくさん情報あるのでそちらで。

## 対象システムのwebpackerでのbuild対象

“`:application.html.erb
<%= stylesheet_pack_tag 'application' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
“`
としてるので、js,css 共にbuild対象。

## ファイル構成(必要部分のみ)
“`
app/
└ javascript/
└ packs/
| └ application.js
└ stylesheets/
└ application.css
└ custom.min.css
“`

“`:application.js
~~ 省略 ~~
import “../stylesheets/application”;
“`

“`

元記事を表示

Ruby on Railsで現在いるページの判定をする

## current_page?メソッド

viewで使用

“`
# http://hoge.com/fugaかどうか
current_page?(http://hoge.com/fuga)

# /hogehogeかどうか
current_page?(/hogehoge)

# hoge_pathかどうか
current_page?(hoge_path)

# 任意のアクションかどうか
current_page?(action: ‘new’)

# 任意のコントローラ/アクションかどうか
current_page?(controller: ‘hoge’, action: ‘new’)
“`

元記事を表示

[Rails]モデルの単体テスト実装方法

## 前提条件
今回は新規ユーザー登録に関するモデルの単体テストを実装していきながら、方法をアウトプットします。ユーザー登録の仕様書は以下のとおり。

“`
ニックネームが必須
メールアドレスは一意である
メールアドレスは@とドメインを含む必要がある
パスワードが必須
パスワードは7文字以上
パスワードは確認用を含めて2回入力する
ユーザー本名が、名字と名前でそれぞれ必須
ユーザー本名は全角で入力させる
ユーザー本名のフリガナが、名字と名前でそれぞれ必須
ユーザー本名のフリガナは全角で入力させる
生年月日が必須
“`

マイグレーションファイルは以下のとおり。

“`20200823050614_devise_create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable t.string :nickname,

元記事を表示

byebugの導入から使い方まで

Railsの勉強の際にデバッグツールは使っていますか?
デバッグツールとは、プログラミングにつきもののデバッグ作業をサポートしてくれるツールのことで、ステップ実行といって一行ごとにプログラムを実行してその時に宣言されている変数の中身をみながら動作を確認する事が出来ます。

それではRailsの開発に使っているbyebugについて紹介していきます。

まずはbyebugのgemをインストールして、デバックしたいコードに「byebug」というメソッドを仕込んでおくと、プログラムがそこを通過した時に止まり、デバッグモードが開始、対話形式でコマンドを打ち込んでおくと自由にメソッドを実行したり変数の値を確認したり出来ます。

# インストール方法
インストールはGemfaileに

“`
gem ‘byebug’
“`

を追記するだけです。 (railsをインストールしている場合はデフォルトでインストールされています)

追記したら

“`
bundle install
“`

でgemをインストールしてきます。

# byebugの使い方
まずbyebugを開始するには、デバッグ

元記事を表示

Ruby始めました

こんにちは

今日から主にRubyに関して記事を書いていけたらなあと思います。

普段は検索して記事を見つけて勉強していましたが、メモ代わりに書き出していきたいと思います。

“`ruby:ruby.rb
puts “hello Qiita!”
“`

うん、見やすい!

元記事を表示

Rubyの基礎文法を簡単にまとめてみた

個人的に理解が浅い部分を抜粋してまとめています。
詳細はページ下部リンクからご覧ください。

# ハッシュ

“`ruby
#key:valueをひとかたまりに格納する
fruits = {“a”:”apple”, “b”:”grape”, “c”:”orange”}
puts fruits
puts fruits[:a] #キー値で取り出す

#実行結果
{:a=>”apple”, :b=>”grape”, :c=>”orange”}
apple
“`

# 条件分岐

“`ruby
if 条件A
条件に一致した場合の処理
elsif 条件B
条件Aと一致せず、条件Bに一致したの時の処理
else
条件A, Bのどちらにも一致しない時の処理
end
“`

# インデント

rubyでは、tabキーでインデントはNG!

スペースキーでインデント作る!

# 繰り返し処理

### for文

“`ruby
list = [1, 2, 3, 4, 5]
for item in list
puts item
end

#実行結果
1
2
3
4
5

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #2 gitとrubocop導入

# Githubに上げる

←[Rails 6で認証認可入り掲示板APIを構築する #1 環境構築](https://qiita.com/rf_p/items/a846553c11571f4177eb)
前回の続きから。
とりあえず動くところまでいったのでGithubにpushしましょう。

New repositoryを選択。

その後適当な名前を付けて作成。
他の人からソースコードを見られたくなければPrivateに。問題なければPublicに。

![rep.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199678/1c4fa022-f9ee-8867-2f20-ecf2507bb2df.png)

Cloud9はデフォルトでgitが入っているのでそのままgitコマンドが使えます。

“`powershell
$ git add -A
$ git commit -m ‘initial commit’
$ git remote add origin https://github.com/{YOU

元記事を表示

【RSpec】FactoryBotを使ってみよう【Rails】

# Factory Botとは??

– テストのためのデータを簡単に作成できるライブラリ
– `Active Record` を使う

# Factory Botのあれこれ

`factory_bot_rails`をインストールすると、下記のようなコマンドで`factory`を作成するためのファイルを作ることができます。

“`
bin/rails g factory_bot:model task
“`
少し解説します。

`bin/rails g`までは大丈夫でしょう。`factory_bot:model`でモデルに明示します。`task`のように対象を指定してあげてください。

このコマンドを実行すると、`spec/factories/tasks.rb`に以下のようなファイルが生成されると思います。

“`spec/factories/tasks.rb
FactoryBot.define do

factory :task do

end
end
“`

雛形ができましたね。この中にデータを定義していきましょう。

“`spec/factories/tasks.

元記事を表示

[ruby]標準入力からの値を受け取るには?

#概要
paizaで2つ以上の出力の取得方法が分からず、調べていると解決したので、記録しておきます。
今回は1行に複数の要素が入力されている場合です。

#本題
以下の入力結果を整数型に変換し、出力します。

“`
標準入力
1999 2000
“`

“`
input_line = gets.split(‘ ‘).map(&:to_i)
puts input_line
“`

“`
出力結果
[1999, 2000]
“`

「split」は要素を分解し、配列に格納します。

「map」はブロック内を評価し、配列に置き換えます。今回の場合、整数型に置き換えているということだと。

間違っていれば、ご指摘お願いいたします。

元記事を表示

Railsチュートリアル テストについて

##はじめに

Railsチュートリアルを学習すると、第3章にいかに「自動化テスト」が重要であるか書いてあります。テストの書き方については色々議論の余地があるそうですが、本記事ではテストについて自分なりに抑えていたほうが良いと思われることをまとめました。

##テストフレームワークについて

テストフレームワークにもいくつか種類があり、それぞれコード書き方等の特徴があります、ここでは主だった2種類のフレームワークを紹介します。

参考にしました →[Railsの人気テストフレームワーク6選!](https://www.atmarkit.co.jp/ait/articles/1108/18/news113.html)
         [RSpecとMinitest、使うならどっち?](https://speakerdeck.com/jnchito/number-kanrk06?slide=38)

### Minitest
 ・Railsのデフォルトのフレームワーク。
 ・学習コストは比較的低い。
 ・Railsチュートリアルでも使用されている。
 ・処理速度は比較的早いといわれている

元記事を表示

【Ruby on Rails】投稿機能の非同期通信、ajax化

# 目標
![ajax.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700999/471dd00f-4edd-7f23-17af-5fbd628f000f.gif)

# 開発環境
ruby 2.5.7
Rails 5.2.4.3
OS: macOS Catalina

# 前提
– [deviseでログイン環境構築](https://qiita.com/japwork/items/275110b810965fbdf72f)
– [ログインユーザーのみができる投稿機能](https://qiita.com/japwork/items/8dfb52121036791ac4fb)
– [投稿の編集機能(更新、削除)](https://qiita.com/japwork/items/e258ccbbe4f48ea5a3b5)

# 流れ
1 gem ‘jquery-rails’を導入
2 非同期通信にしたい箇所を部分テンプレート化
3 remote: trueを記述
4 js.erbファイルを作成
5 c

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #1 環境構築

# はじめに

Rails APIに関して、チュートリアルがあまり見当たらなかったため作成しました。
なお、筆者自身もRails API触り始めて半年程度なので、誤っている点などあればご指摘ください。

Rails APIモードを使い、掲示板APIを構築してみようと思います。
なお、フロントエンドは本チュートリアルに含みません。
API完成後、ご自由なものを選択してください。

# 対象読者

* [Ruby on Railsチュートリアル](https://railstutorial.jp/)を1周し、Railsアプリケーションの実装方法や用語がなんとなく分かっている方
* モノリシックなRailsではなく、RailsのAPIサーバを構築したい方

RailsのCRUD操作に関する最低限の知識はないと、追いつくのは難しいかもしれません。

# 最終的な環境・Gem

AWS Cloud9
PostgreSQL 9.5.15
Ruby 2.7.1
Ruby on Rails 6.0.3.2

Gem
シリアライザ:[active_model_serializers](https://g

元記事を表示

can’t find gem bundler (>= 0.a) with executable bundleの対処法

既存のRailsプロジェクトをcloneし、`% bundle install`をした際にこのエラーが発生。

“`
% bundle install

Traceback (most recent call last):
2: from /Users/trilingual/.rbenv/versions/2.5.1/bin/bundle:23:in `


1: from /Users/trilingual/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path’
/Users/triringual/.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 bundle (Gem::GemNotFoundException)
“`

### 原因
Gemfile

元記事を表示

[rails]ネストした関係で親情報を子ビューに表示する方法

#やりたいこと
前提・Itemの情報がないとOrderの情報は成り立たない関係
(Orderにitem_idカラムがある(どのitem情報を指しているのか?))
(親)itemテーブル>(子)orderテーブルになる。

orderコントローラでindexアクションを起動させ(index.html.erb)に
(親)のitem情報を表示させたかったらどうやって記述するの?
※例えば
itemテーブル     
id:1
ぬいぐるみ4000円

orderテーブル
item_id:1
user_id:3
ぬいぐるみ4000円とuser_idが結びつくんだな・・・

#手順

“`
config/routes.rbの記述内容
Rails.application.routes.draw do
devise_for :users
root ‘items#index’
resources :items do
resources :orders, only: [:create, :index]
end
end
“`

#1.親items>子orders

元記事を表示

【Rails】db:migrateでNo database selectedとUnknown databaseというエラーが出た時の対処

#はじめに

思い付いたアイデアを形にしたくてWebサービスの作成を本日より始めました。
早速、エラーにハマったので忘備録として残します。

“`erb:環境
Rails : 6.0.3.2
ruby : 2.6.3
“`

#エラー内容
deviseでユーザーログイン画面の作成を行なってます。
下記コマンドでエラーが発生しました。

“`erb:ターミナル
$ rake db:migrate

rake aborted!
ActiveRecord::StatementInvalid: Mysql2::Error: No database selected
“`

どうやら、データベースが選択されていないとのこと。
database.ymlを確認すると、、、

“`erb:database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: <%= ENV['DATABASE_DEV_USER'] %>
password: <%= ENV['DATAB

元記事を表示

simple_formを使ってみる/子モデルまで編集する

# 概要
simple_formは高機能なフォームを自動作成してくれるgemです。https://github.com/heartcombo/simple_form
フォームを作ってくれるだけでなく、エラーメッセージや項目名なども自動で表示します。

今回はテーブルが2つのシンプルなrailsプロジェクトで、
simple_formを使ってみました

※bootstrapやCSSは一切使っていません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591098/46bed595-cde4-1524-2397-8ab32dd7658b.png)

#実装
まずは一番シンプルな実装userモデルのみ実装します

“`ruby:gemfile
gem ‘simple_form’
“`

“`ruby:user.rb
class User < ApplicationRecord validates :name, presence: true validates :email, p

元記事を表示

(ギリ)20代の地方公務員がRailsチュートリアルに取り組みます【第4章】

##前提
・Railsチュートリアルは第4版
・今回の学習は3周目(9章以降は2周目)
・著者はProgate一通りやったぐらいの初学者
##基本方針
・読んだら分かることは端折る。
・意味がわからない用語は調べてまとめる(記事最下段・用語集)。
・理解できない内容を掘り下げる。
・演習はすべて取り組む。
・コードコピペは極力しない。

第4章です。この章は冗長な内容だった記憶が…。つべこべ言わずやっていきます。
本日のBGMはこちら。
[matryoshka “zatracenie[full album]”](https://www.youtube.com/watch?v=Un46fKZ_0RY)

 
####【4.1.2 カスタムヘルパー メモ】
・新しく作ったメソッド=カスタムヘルパー
・**全てのページで使うヘルパー:app/helpers/application_helper.rb に設置**
・**特定のコントローラだけが使うヘルパー:app/helpers/(該当のコントローラ名).rb に設置**

 
####【4.2.2 文字列 メモと演習】
・putsメソッドは

元記事を表示

Rubyの文法エラーと対策

備忘録の最たる例として、遭遇したエラーと解決方法を書いていく。

# ①構文がおかしいよ?[syntax error, unexpected tIDENTIFIER]
syntax error = 構文エラーなので、記述したコードの何処かが間違っていると怒られる。
下記コードはファイルをターミナルで出力した結果。

“`
main2.rb:81: syntax error, unexpected tIDENTIFIER, expecting ‘)’
hp: params[:hp]
main2.rb:82: syntax error, unexpected ‘:’, expecting end
offense: params[:offense]
main2.rb:83: syntax error, unexpected ‘:’, expecting end
defense: params[:defense]
main2.rb:84: syntax error, unexpected ‘)’, expecting end
)
“`

“`m

元記事を表示

ruby資格試験ポイントまとめ

##Ruby Silver 試験ポイントまとめ(自分用)
自分用メモで汚いですが間違えやすいところをまとめてますぜひ

– 12問間違えてもいい。38問正解スルヒツヨウガアル
– Ruby 2.0以降では、デフォルトのスクリプトエンコーディングはUTF-8
– Hash#eachのブロックパラメータはArray。
– Hash#size はhashの要素の数を返す
– Enumerable#select selfからブロックの条件に該当する要素を集めて返す。
– Enumerable#find selfからブロックの条件に該当する最初の要素を返す。
– Array#delete selfから引数の要素を削除。削除した要素を返す。破壊的メソッド。

– 例外処理について
– Rescue 節で省略するとstandard error とそのサブクラスを拾う
– Ensure節は必ず実行される
– raiseメソッドは引数を指定していなければ、RuntimeError例外
を発生
 - elseもある。rescueが実行されないときに実行。resucueの下に書く。

元記事を表示

GitHubActionsでRuby on RailsのRSpecテストを実行する

Ruby on RailsのRSpecテストをGitHubActionsで実行しようとしたら、そこそこ大変だったのでメモに残しておきます。

# GitHubActionsとは

GitHub上で動作するサーバレスな実行環境です。
リポジトリ内のファイルに設定を記述することで、GitHubの各種操作にトリガして任意のアクションを実行できる仕組みです。
パブリックリポジトリであれば無料で使えます。

今回はPull Requestの作成に紐づけてRSpecを実行することで、Rails用のCIにしようと思います。

# 結論

Railsを実行できるDockerイメージをDockerHubにアップロードして、DockerPullしてテストを実行するのが良さそうです。

# 環境

– Ubuntu 16.04 LTS
– Ruby on Rails 6.0
– Ruby 2.6.6

OS以外は違っても簡単に対応できます。

# Dockerイメージを作ってDockerHubにアップロードする

## Dockerfile

ベーシックな環境です。
必要なライブラリがあれば追記してください

元記事を表示

OTHERカテゴリの最新記事