- 1. Rails × chart.js でサウナ活動(投稿)データに連動するラベル付きの円グラフを作ってみた。
- 2. git cloune
- 3. 【RSpec / Rails】サポートモジュールで結合テストコードの記述を短くする(ログイン動作をまとめる)
- 4. 【Rails】結合テストコードの書き方(新規登録に関するテストコード)
- 5. 【Rails/System Spec/Capybara】結合テストコードを書くときによく使う表現 一例
- 6. 【Ruby+rubocop】RuboCopでコーディングチェックする。
- 7. 本番環境でプリコンパイルができませんよ。。
- 8. railsのform_withにおけるselectメソッドの初期値設定方法
- 9. Ruby と crystal で解く AtCoder ABC253 C
- 10. rubyの配列で、同じ値の個数を数える
- 11. Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)’ has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)’ instead.を解決する話。(Mac railsコマンド等で出る)
- 12. 【Rails6】Action Mailer お問い合わせメールを自分のGmailに送信させる方法
- 13. 動的なクラス名をつけるときに気をつけること
- 14. Ruby on railsにおけるFakerの導入
- 15. Ruby on railsにおけるFactoryBotの導入について
- 16. Rubyで分節可能符号判別アルゴリズム(Sardinas-Patterson Algorithm)の実装
- 17. 【Rails】Rspecのカバレッジをプルリクのコメントで表示する
- 18. Ruby on railsにおけるRspecの導入方法
- 19. Ruby on railsにおけるdevise導入手順
- 20. undefined method `mechanism=’ for ActiveSupport::Dependencies:Moduleを解決した話。(Mac rails consoleが起動できない編)
Rails × chart.js でサウナ活動(投稿)データに連動するラベル付きの円グラフを作ってみた。
# 0. はじめに
こんにちは、[まつけん](https://twitter.com/matsuken_web314)です。
[サウナ記録を管理するアプリ](https://totonoi.org/)(転職活動用のポートフォリオ)に組み込んだ
**投稿に連動する円グラフ**をどうやって実装したのかを解説する記事です。(下の画像参照)![sakatugraph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1584967/2b1e7ddb-4220-b2d1-e6fb-bae959694ab5.png)
↓ポートフォリオの解説記事です↓
https://qiita.com/matsuken314/items/2ae660c7635cca726283
## この記事のゴール(とりあえず)
– [chart.js](https://www.chartjs.org/docs/latest/)の円グラフがどういう風にWebアプリに組み込まれるのか分かる
– gemの
git cloune
sasakiyuuya@mbp ~ % cd .ssh
sasakiyuuya@mbp .ssh % chmod 400 jojotech.pem
sasakiyuuya@mbp .ssh % ssh -i jojotech.pem ec2-user@54.249.7.206
[ec2-user@ip-10-0-8-195 ~]$ cd /var
[ec2-user@ip-10-0-8-195 var]$ sudo chmod 755 www
[ec2-user@ip-10-0-8-195 var]$ cd www/
[ec2-user@ip-10-0-8-195 www]$ sudo git clone https://github.com/jojo232/cloud9.git
[ec2-user@ip-10-0-8-195 cloud9]$ gem install bundler
[ec2-user@ip-10-0-8-195 ~]$ gem install rails -v 6.1.4
[ec2-user@ip-10-0-8-195 ~]$ cd /var/www/cloud9
【RSpec / Rails】サポートモジュールで結合テストコードの記述を短くする(ログイン動作をまとめる)
## 初めに
今回は結合テストコードの記述を短く、可視性を高めるために
繰り返し使用するログイン動作をまとめました。
使用頻度が高くないので、いざ使うときに忘れないよう実装の記録をまとめました!## サポートモジュールとは?
RSpecに用意されている、メソッド等をまとめる機能のことです。
「ログインしたら投稿ページに遷移できる」
「ログインしたら編集ページに遷移できる」
「ログインしたら削除ページに遷移できる」等
複数出てくる同じ処理をまとめることができます。## 使い方
#### ①ディレクトリとファイルを作成
specディレクトリ配下に
supportディレクトリを作成し
その配下にsign_in_support.rbを作成します。
(ファイル名はご自身がわかりやすいものでOKです!
今回はログインのため「sign_in_support」という名前にしています)“`
? spec
? factories
? models
? requests
? support こちらのディレ
【Rails】結合テストコードの書き方(新規登録に関するテストコード)
## 初めに
今回は結合テストコードの書き方(新規登録に関するテストコード)を実装した記録です。
初めて実装する方でもイメージがしやすいよう、実際の処理画像や考え方の基盤的な部分も合わせてまとめています!【Rails/System Spec/Capybara】結合テストコードを書くときによく使う表現 一例もまとめています。
## 結合テストコードとは?
・ユーザーがたどる一連の流れを確認するもの例 新規登録についての結合テストコード
“`
新規登録ボタンの確認 → 新規投稿ページに移動 → フォームに必要事項入力
→ 登録ボタンを押す → トップページに戻る
“`手動で行うと人的ミスや確認漏れが起こる可能性がありますが、
結合テストコードを実行することで毎回同じ結果が得られるというメリットがあります。## 結合テストコードを実行するために使うもの
##### ・System Spec(システムスペック)
結合テスト
【Rails/System Spec/Capybara】結合テストコードを書くときによく使う表現 一例
## 初めに
今までテストコードを書く際に調べながら書いていたため、時間がかかっていました。
今後効率的に記述ができるように
結合テストコードを書くときによく使う表現の一例をまとめていきたいと思います!## 結合テストコードを書くときによく使う表現 一例
#### ○○ページに移動する(実際に遷移する際に使用)
visit 〇〇_path・パスを調べる方法
“`
% rails routes
“`
—#### visitで訪れたpageの中に、Xという文字列があるかどうかを判断する
expect(page).to have_content(‘X’)
##### ・・ page
visitで訪れた先のページの見える分だけの情報が格納されている。
※カーソルを合わせてはじめて見ることができる文字列はpageの中に含まれない。##### ・・ have_content(‘X’)
Xという文字列が「ある」ことを判断する##### ・・ have_no_content(‘X’)
Xという文字列が「ない」ことを判断する—-
#### 要素の中に当
【Ruby+rubocop】RuboCopでコーディングチェックする。
自分用のメモとして残します。
# やり方
前提として、rubocopをインストールしていること。## チェックのみ:ファイル単体
“`zsh
bundle exec rubocop ファイルパス
“`## チェック&自動整形:ファイル単体、-a オプション
-a オプションで自動整形できるものはしてくれる。
–auto-correct の略“`zsh
bundle exec rubocop ファイルパス -a
“`
以上です。
本番環境でプリコンパイルができませんよ。。
## はじめに
Rails Tutorialを学習中に下記のエラーが発生しました。“`shell:terminal
Minitest::UnexpectedError: DRb::DRbRemoteError: Asset `application.css` was not declared to be precompiled in production.
Declare links to your assets in `app/assets/config/manifest.js`.//= link application.css
“`
まず開発環境でレンダリングを試しても問題なかったので、エラー文通り **本番環境で稼働する際にプリコンパイルできないし宣言されてないよ!!** と怒られたみたいです。。。### 開発環境
– HostOS: windows11 Home
– GestOS: ubuntu/xenial64
– ruby: 2.7.5
– Ruby on Rails: 6.1.6##
railsのform_withにおけるselectメソッドの初期値設定方法
## 概要
form_withにおけるselectメソッドの初期値の設定方法が地味に迷ったのでまとめます。
## 初期値設定方法について
初期値設定方法は大きく2つあります。
### options_for_selectを使う方法
“`ruby
# bが選択される
= f.select :hoge, options_for_select([“a”,”b”,”c”], selected: “b”)
“`### options_for_select を使わない方法
“`ruby
# bが選択される
= f.select :hoge, [“a”,”b”,”c”], { selected: “b” }
“`## 注意点
### 失敗例
これだと失敗する。
“`ruby
# aが選択される
= f.select :hoge, [[“a”, 1],[“b”, 2],[“c”, 3]], { selected: “b” }
“`### 解決策
選択肢が二次元配列で渡されている場合(1つの選択肢が複数の要素を持っている場合)、最初の要素がページ上に出力され、最
Ruby と crystal で解く AtCoder ABC253 C
# はじめに
AtCoder さん、ありがとうございます。
# C – Max – Min Query
https://atcoder.jp/contests/abc253/tasks/abc253_c出題の趣旨として、配列の`Max`や`Min`(や`Sort`等)は毎回計算するとコストがかかるので、`TLE`を避ける工夫が必要です。
# Hash + メモ
## Ruby
“`rb
q = gets.to_i
h = Hash.new(0)
h_max = -1
h_min = 1000000001
q.times do
s = gets.chomp
case s[0]
when ‘1’
x = s.split[1].to_i
h[x] += 1
h_max = x if h_max < x h_min = x if h_min > x
when ‘2’
_, x, c = s.split.map(&:to_i)
x = s.split[1].to_i
if h[x] > c
h[x] -=
rubyの配列で、同じ値の個数を数える
# group_byを使うやり方
group_byメソッドで、同じ値のグループを作成し、
`key value`形式で、
mapメソッドの中で集計する
最後に`to_h`で見やすく出来る“`rb
ary = [1, 1, 1, 2, 3, 3]p ary.group_by(&:itself).map{ |key,value| [key, value.count] }.to_h
=> {1=>3, 2=>1, 3=>2}
“``to_h`抜きだと見にくい
![スクリーンショット 2022-05-31 8.55.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492674/049361c8-f637-4f63-1a71-466a1bc27704.png)# 参考文献
`group_by`
こんな感じで、デフォルトではハッシュが作成される。“`rb
ary = [1, 1, 1, 2, 3, 3]
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)’ has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)’ instead.を解決する話。(Mac railsコマンド等で出る)
# Calling `DidYouMean::SPELL_CHECKERS.merge!…が出た!
railsコマンドやbundleコマンドを実行すると、掲題のエラーが出る。
特にそれによって何かが使えないというわけではないが、エラー内容にある通り非推奨みたいだし、毎回これが出るのは不愉快なので、消したい思う!# bundlerのバージョンを変えよう!
https://github.com/rubygems/rubygems/issues/5234
上記の記事によると、bundlerのバージョンをアップデートすればOKみたい。
さっそくやっていく!“`
$ bundle -v
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)’ has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)’ instead.
Bundler version 2.2.17
$ bun
【Rails6】Action Mailer お問い合わせメールを自分のGmailに送信させる方法
## 実現したいこと
この記事では、以下のような、よく見る問い合わせフォームを使ってユーザーから問い合わせがあったときに、特定のGmailに問い合わせメールが届くようにするための方法を紹介しています。![お問い合わせフォーム 2022-05-30 21.39.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1293645/1a216619-d6aa-1f9d-d844-973de54177f4.png)
## 実装環境
ruby 2.6.6
Rails 6.0.3.6## 手順
## ①Googleアカウントでアプリパスワードを発行する。
⚠アプリパスワードを発行するアカウントは、問い合わせメールを受け取りたいGmailのアカウントがいいです。## ②2段階認証プロセスを有効にする
2段階認証の設定の仕方
まず、下の画像のページに進み、「Googleアカウントを管理」をクリック。
![Googleアカウント 2022-05-30 22.10.00.png](https://qiita
動的なクラス名をつけるときに気をつけること
先日[この記事](https://qiita.com/michikun06/items/d9bbea4f62af734ba234)で動的なクラス名をつける方法を解説したが
はまりポイントがあったため、追加で書きます。
# ハマりポイント
前回の記事で解説した下記のコード、、、複数のクラス名指定ができません。
“`
class=<%= "section#{question.id}" %>
“`例えばこのように
“`
class=<%= "section#{question.id} btn btn-default" %>
“`
書くと、“`class=”section1″ btn btn-defaul“`とレンダリングされてしまいます。# 原因
単純なHTMLの書き方の問題です。
上記の書き方だと、レンダリングされたときに“`class= section1 btn“`となってしまうため、HTMLの性質上、一つしか読み込まれません。
ですので
“`
class=”<%= "section#{question.id} btn btn-default" %>”
“`
Ruby on railsにおけるFakerの導入
## なぜFakerを使用するのか
例えばバリデーションで `uniqueness: true`を指定している場合などに、値が固有のものでは複数のテストを行う際に弾かれてしまうことが考えられるため、値をランダムに生成したいという場面が存在するため。[Fakerの公式GitHub](‘https://github.com/faker-ruby/faker’)
## Gemfileを編集する
“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’
gem ‘faker’
end
“`
:::note warn
重要
`group :development, :
Ruby on railsにおけるFactoryBotの導入について
## なぜFactoryBotを導入するのか
Userモデルの単体テストを例に挙げると、ユーザーを生成する際に、`user = User.new(name:’takashi’, email:’takashi@mail, password:’111111’`のように都度記述するよりも、まとめて記述してしまった方が効率的であるため## Gemfileを編集する
“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’
end
“`
:::note warn
重要
group :developemnt, :test doの中に記述する
:::
## bundle ins
Rubyで分節可能符号判別アルゴリズム(Sardinas-Patterson Algorithm)の実装
# はじめに
大学の情報理論の講義で、分節可能符号について学びました。
分節可能符号であるかどうかは、判別アルゴリズムを使って判断できます。その判別アルゴリズムをRubyで実装してみました。
ちなみにこのアルゴリズムは、Sardinas-Patterson Algorithmというものだそうです。
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549439/8dd5c9d0-0d67-3791-01be-f6d0211aa578.gif)## 分節可能符号とは
分節可能な符号のことで、ある符号が与えられた時、その符号が1通りの復号しかできない符号のことです。2通り以上に復号できるものは分節可能符号ではありません。
たとえば、符号語系列`1100101111010`があったとします。これを復号するために以下の符号が与えられています。
`{a, b, c, d} = {00, 10, 11, 110}`
こ
【Rails】Rspecのカバレッジをプルリクのコメントで表示する
# 初めに
`OSS`などでよく見る`CI`での Rspec カバレッジをプルリクのコメントで表示するやり方を記事にしておきます。
## 環境
– Rails 6.1.4
– Ruby 2.7.4
– codecov 0.6.0
– simplecov 0.21.2# 本編
今回は`CircleCI` `Codecov` `simplecov`を利用してカバレッジを取得していきます。
## Codecov の設定
1. まずは、[Codecov](https://about.codecov.io/sign-up/)にアクセスし、アカウントを作成してください。
2. リポジトリの設定ページにアクセスし、`Codecov Token`を取得します。## CircleCI の設定
すでに`CircleCI`での Rspec が稼働している前提です。
1. `CircleCI`の環境変数の設定ページにアクセスする。
2. `CODECOV_TOKEN`の名前で先ほど取得したトークンを設定します。
3. orb を利用するので、`Organization Settings
Ruby on railsにおけるRspecの導入方法
## 環境
ruby 2.6.5
rails 6.0.0## Gemの追加
“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’
end
“`
:::note warn
重要
`group :development, :test`のグループ内に記述する
:::
## bundle installを実行
“`terminal:ターミナル
% bundle install
“`
## Rspecをインストール
“`terminal:ターミナル
% rails g rspec:install
“`
## .rspecに設定を追加
“`ruby:.rspec
–require spec_helper
–f
Ruby on railsにおけるdevise導入手順
## はじめに
初めての投稿は、Railsでユーザー管理機能を実装する際に使用するdeviseの導入方法についてまとめておこうと思う。
## 環境
ruby 2.6.5
rails 6.0.0
## Gemfileの編集“`ruby:Gemfile
gem ‘divise’
“`
## コマンドを実行し、Gemをインストール“`terminal:ターミナル
# Gemをインストール
% bundle install
“`
## ローカルサーバーを再起動“`terminal:ターミナル
% rails s
“`
## deviseの設定ファイルを作成する
– deviseを使用するためには、Gemのインストール+devise専用のコマンドで設定ファイルを作成する必要がある。“`terminal:ターミナル
% rails g devise:install
“`
成功すると以下のようなログが流れる“`terminal:ターミナル
create config/initializers/devise.rb
create config/loc
undefined method `mechanism=’ for ActiveSupport::Dependencies:Moduleを解決した話。(Mac rails consoleが起動できない編)
# 環境
OS: Mac
SHELL: zsh
rails: 7.0.3# undefined method `mechanism=’ …が出た!
rails consoleを立ち上げようとしたら、掲題のエラーが発生した。https://stackoverflow.com/questions/70849954/undefined-method-mechanism-for-activesupportdependenciesmodule-nomethoder
上記の記事にならって、下記のgemを削除する。’spring’gemは元々入れていたためそのまま。
“`
gem ‘spring-watcher-listen’ # 削除
“`# 解決した
再びrails consoleを立ち上げる。
“`
$ rails c
Running via Spring preloader in process 45130
Loading development environment (Rails 7.0.3)
irb(main):001:0>
“`
立った。。。。!
どう