- 1. こんにちは
- 1.0.1. Rubyの基礎文法を簡単にまとめてみた
- 1.0.2. Rails 6で認証認可入り掲示板APIを構築する #2 gitとrubocop導入
- 1.0.3. 【RSpec】FactoryBotを使ってみよう【Rails】
- 1.0.4. [ruby]標準入力からの値を受け取るには?
- 1.0.5. Railsチュートリアル テストについて
- 1.0.6. 【Ruby on Rails】投稿機能の非同期通信、ajax化
- 1.0.7. Rails 6で認証認可入り掲示板APIを構築する #1 環境構築
- 1.0.8. can’t find gem bundler (>= 0.a) with executable bundleの対処法
- 1.0.9. [rails]ネストした関係で親情報を子ビューに表示する方法
- 1.0.10. 【Rails】db:migrateでNo database selectedとUnknown databaseというエラーが出た時の対処
- 1.0.11. simple_formを使ってみる/子モデルまで編集する
- 1.0.12. (ギリ)20代の地方公務員がRailsチュートリアルに取り組みます【第4章】
- 1.0.13. Rubyの文法エラーと対策
- 1.0.14. ruby資格試験ポイントまとめ
- 1.0.15. GitHubActionsでRuby on RailsのRSpecテストを実行する
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 dofactory :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.2Gem
シリアライザ:[active_model_serializers](https://g
can’t find gem bundler (>= 0.a) with executable bundleの対処法
既存のRailsプロジェクトをcloneし、`% bundle install`をした際にこのエラーが発生。
“`
% bundle installTraceback (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:migraterake 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.6OS以外は違っても簡単に対応できます。
# Dockerイメージを作ってDockerHubにアップロードする
## Dockerfile
ベーシックな環境です。
必要なライブラリがあれば追記してください