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

Ruby関連のことを調べてみた2020年05月25日
目次

Allureを用いて言語、フレームワークに依存しないシャレオツなテストレポートを生成しよう!

# 概要

Allureについて、公式ドキュメントの意訳をベースに紹介します。

※ 言語、フレームワークに依存しないのは間違いないですが、本記事では便宜上 `RSpec`(Ruby) を用いて進めます。

# Allureについて

テストフレームワークといえば、`JUnit` `RSpec` `jest` `pytest` など、様々な言語で数多くの優れたツールが用意されています。

しかし、多くのツールはビジュアルに優れたテストレポートを生成する機能は持ち合わせていません。

[Allure](http://allure.qatools.ru/)はそれを補うための、言語やフレームワークに依存せずに、チームの誰もが簡単に理解できるテスト実行レポートを生成するためのOSSです。

# デモ

百聞は一見にしかず。[デモレポート](https://demo.qameta.io/allure/) を開いてみましょう。

![スクリーンショット 2020-05-16 2.46.02.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

DaprでRubyとJavaを連携させてみる

## はじめに

[マイクロサービス開発を容易にするDaprをJavaで利用してみた](https://qiita.com/koduki/items/bf50cb3aa14b88243ad2)に引き続きDaprです。

[チュートリアル](https://github.com/dapr/samples/tree/master/1.hello-world)のStep6に相当します。
コードは下記を参照
https://github.com/koduki/example-dapr/tree/v01

## 構成概要

チュートリアルではPythonですが、趣味の問題でRubyを使っています。
この構成のポイントはRubyとJavaは直接通信しないどころはRubyはあくまで自分のサイドカーのDaprと話すのであってJavaを起動しているDaprとは直接話さないことです。

![dapr_sample01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54904/9de0ce94-b09b-966e-d76d-

元記事を表示

Ruby Python Java 大文字小文字を区別しないソート

# はじめに
ソートと言えば、数値順・辞書順ですが、それ以外のソートについて調べてみました。
# 嵌った話
@jag_507 さんの*[AtCoderでRuby学習10【第一回アルゴリズム実技検定 DoubleCamelCase Sort】](https://qiita.com/jag_507/items/5cc3e09121679ef48f51)*を読んで、*[AtCoder 第一回アルゴリズム実技検定 F – DoubleCamelCase Sort](https://atcoder.jp/contests/past201912-open/tasks/past201912_f)*をやってみましたが、ソートがうまくいかないです。

“`sort.rb
a = [“FisH”, “DoG”, “CaT”, “AA”, “AaA”, “AbC”, “AC”]
a.sort
# => [“AA”, “AC”, “AaA”, “AbC”, “CaT”, “DoG”, “FisH”] # 実際の返り値
[“AA”, “AaA”, “AbC”, “AC”, “CaT”, “DoG

元記事を表示

Railsでよく使うRubyのメソッド

# はじめに
Ruby on Railsをメインに扱うWeb受託開発企業に転職し、約4ヶ月が経過しました。
初心者ながらにプロジェクトにアサインして頂き苦し楽しい毎日を過ごしております。
開発していく中でよく使うなーと思うRubyのメソッドをまとめていきます!

# メソッド一覧
### if
説明不要の条件分岐メソッド。
true,falseで評価し、実行する処理を分岐させる。

“`
if 条件式
ifに対するtrue処理
elsif 条件式
elsifに対するtrue処理
else
falseの処理
end
“`

### each
配列の要素を繰り返しの形で取得するメソッド。
RailsではDBのレコードを順に取得する際に利用しています。

“`
[1, 2, 3].each do |i|
p i
end
出力
1
2
3
“`

### map
こちらもeachメソッドと似ていますが、
DBのレコードを取得する際にカラム指定する際に利用しています。

例えば以下のテーブルがあった場合

“`
Usersテーブル
id |name | a

元記事を表示

Rubyのバージョンを変えたらbundle installができなくなった

#事件発生
ある日のことだった

“`
$ bundle install
“`
を入力すると

“`
Traceback (most recent call last):
~/.rbenv/versions/2.5.0/bin/ruby: invalid option -: (-h will show valid options) (RuntimeError)
“`

ええええ何だこれ!
他のコマンドも受け付けてくれない、何をしでかしたんだ…
#これまでを振り返ってみよう
自分が致命的な何かをしてしまったはず…
##Ruby : 2.7 で開発していた
“`
(自分の環境)/vendor/bundle/ruby/2.7.0/gems/active_hash-3.1.0/lib/associations/associations.rb:22: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
(自分の環境)/ven

元記事を表示

[rails]Rspecで単体テストを行おう!

テストには、単体テストと統合テストの2種類がある。

-単体テスト
 1つのプログラムに対して、正常に動くかのテスト。
 (例)モデルクラスごと

-統合テスト
 1蓮の処理に関するテスト。
 (例)ユーザーの新規登録用画面から値を入力、送信して、データベースにレコードが追加されるまでの流れ

#「Rspec」と「factory_bot」の導入

「Rspec」はテスト行うためのjem、
「factory_bot」はテストを行う際に一時的に情報を作成してくれる
お助けツールです。

そのため、まとめてインストールしましょう。

①jemno
インストール

“`:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’
end
“`

“`:ターミナル
bundle install
“`

②RSpecの最低限必要なファイル/ディレクトリ構成をRailsにインストール

“`:ターミナル
$ rails g rspec:install
#> create

元記事を表示

Rails6.0でselectboxの複数選択をおしゃれにするJavaScriptライブラリ「select2」の導入方法

# はじめに
皆様、こんにちは!
佐久間まゆちゃんのプロデューサーの@hiroki_tanakaです。

先日、Rails6.0系でselectboxの複数選択をおしゃれにするプラグインのselect2を導入することがありました。
その際にRails5系までの導入方法との違いに少しハマったので、調べたことをまとめました。

# 利用環境
– Ruby 2.6.6
– Rails 6.0.2

# select2とは
select2とはHTMLのselectboxのデザインをおしゃれにするJavaScriptのライブラリです。
公式サイトはこちらです。→[select2](https://select2.org/)
単一選択のselectboxのUIだけでなく、複数選択のselectboxも簡単に実装する事ができるプラグインです。

#### [公式サイト上のサンプル](https://select2.org/getting-started/basic-usage)
– select2導入前
![image.png](https://qiita-image-store.s3.ap-nor

元記事を表示

ActiveModel::Serializerのテストでつまづいたこと

### はじめに
[ActiveModel::SerializerのRspec](https://qiita.com/mightysosuke/items/68ba860624973db3c8ca)でテストの書き方の例を挙げました。
ですが、他のSerializerのテストを書く時につまづいたことがあるので、投稿します。

### ソースコード

今回の例は、ArticleとCategoryが多対多の関係にあり、`article_category.rb`という中間モデルを持っているとします。

“`rb:article.rb
class Article < ApplicationRecord has_many :article_categories has_many :categories, through: :article_categories end ``` ```rb:article_serializer.rb class ArticleSerializer < ActiveModel::Serializer attributes :id, :title h

元記事を表示

【Rails】モデルの使い方がイマイチわからない…(クラスメソッドとか意味不m…)

# 経緯
現在、とあるプログラミングスクールに通っているのですが、検索機能(検索窓)を実装する際に、モデルとコントローラーを使い分けるように言われました。
えー… 全部コントローラーでいいじゃん…(もちろん、今では積極的に分けて使用していますよ!)

**・モデルからデータを取得したり、保存したり単純な処理のみ記載**
**・モデル取得した値に複雑な処理を行うものを記載**
というイメージで使い分けています。

ただ、何故**モデルで設定した『処理のカタマリ』**をコントローラーで使えるのか理解できなかったので使いたくなかった、、いや使えなかったんですよね。
(この記事は検索機能の解説をするための記事ではありません。あくまでモデルの使い方について私の頭の整理です。)

# 検索機能の実装

“`:models/tweet.rb(モデル)
class Tweet < ApplicationRecord validates :text, presence: true belongs_to :user has_many :comments def self.search

元記事を表示

複数のRedmineインスタンスを1つのサーバー内で立ち上げ

#Redmineが大量乱立
 Redmineは便利なので、社内ではプロジェクトごとにサーバーを立ち上げています。いつのまにか、30以上のredmineサーバーが乱立しています。もちろん各Redmineごとに物理サーバーを立ち上げているわけではなく、ほとんどが社内にある物理サーバーマシン上の仮想サーバーを作成しています。それでも1サーバーにこれだけの仮想サーバーを立ち上げると不安定になるので、終了したプロジェクトのRedmineサーバーは電源を落としたりしています。
 こんなにRedmineを乱立させなくても、Redmine内でプロジェクトを複数作れば、と思われるかもしれませんが、Redmineユーザーの権限が細かく設定できなかったり、プロジェクトをグループ化したりできないので、結局プロジェクト毎にRedmineを立ち上げてきました。
 さらに、Redmineは常にバージョンアップしていますが、稼働しているRedmineに対してのバージョンアップもリスクが伴います。Redmine/ruby/rails/gem等のバージョン依存も激しいのも、バージョンアップを避けている理由(言い訳)です。

元記事を表示

忘れがちなrubyの基礎知識を復習

## はじめに
改めてrubyの基本的な記法を復習するための記事になります。

## ・あるオブジェクトを文字列に変換するto_sメソッド
“`
# 文字列→文字列
‘1’.to_s # => “1”

# 数値→文字列
1.to_s # => “1”

# nil→空白の文字列
nil.to_s # => “”

# 真偽値true→文字列の”true”
true.to_s # => “true”

# 真偽値のfalse→文字列の”false”
false.to_s # => “false”
“`

## メソッドの呼び出し方

“`
# 通常の書き方
オブジェクト.メソッド(引数1, 引数2, 引数3)
# カッコを省略しても良い
オブジェクト.メソッド 引数1, 引数2, 引数3
# 引数がない場合
オブジェクト.メソッド
“`

## 変数名の作り方
“`
# 変数名はスネークケースが望ましい
first_name = user.first_name

# キャメルケースは慣習的に使用しない
firsfName = user.first_na

元記事を表示

ネストされたフォームにより関連付けられたモデルにデータを同時保存する方法(Rails 6.0.0)

##結論 親モデルにaccepts_nested_attributes_forを追加する
###実証環境
・Cloud9 Ubuntu Server
・Rails 6.0.0
・Ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
###前提条件
次のような一対多のリレーションを持つParentモデルとKidモデルがあるとします。
※1:混乱を避けるため、「Parentって父親?母親?」とかは考えないものとします。
※2:モデル名に不規則変化の名詞を用いるとややこしいので、childではなくkidを用いています。
ペアレントモデルとキッドモデル

“`rb:models/parent.rb
class Parent < ApplicationReco

元記事を表示

【Rails】fields_forが表示されない

今回は、「fields_for」で「file_field」を使用しようとしたところ、ビューに反映されずに苦戦したので、備忘録として解決した方法を記載します。
同じ悩みを抱えた方の一助になると幸いです。

※この記事ではfields_for とaccepts_nested_attributes_for を使ったフォーム作成手順を解説するものではありません。

#今回登場するモデル
・(親)postモデル
・(子)imageモデル

postモデルとimageモデルaccepts_nested_attributes_forでアソシエーションしております。

# 想定
ツイッターやFBのようなSNSを作成。
「form_for」を用いて投稿フォームを作成するところです。

文章 →postモデル
写真 →imageモデル
に保存したく、以下のようにビューを作成しました。

# 間違えたコード
(わかりやすいように関係箇所のみ抜粋してます)

“`:haml
.form__contents
= form_for @post, id: “new_post” do |f|
.titl

元記事を表示

【環境構築 Mac】Ruby on Rails (+Webpackerでエラーの対処)

#初めに
Ruby on Railsの環境構築を行いましたので、記録します。

【構築環境】
・Rails6
・Ruby 2.6.3

【マシンスペック】
・macOS Catalina
・バージョン 10.15.3
・iMac(retina 4K, 21.5-inch,2019)
・プロセッサ 3 GHz 6コアIntel Core i5
・メモリ 8GB

【使用エディター】
VScode
(https://azure.microsoft.com/ja-jp/products/visual-studio-code/)

#構築手順
##Command Line Toolsのインストール
こちらでは、AppleIdが必要になります。
Id・パスワードを忘れている場合は事前に準備してください。

①Appleのdeveloperアカウントページにログイン
https://developer.apple.com/account/#/welcome

②See more downloadsからダウンロードリストページへ
https://developer.apple.com/downloa

元記事を表示

メソッドに引数を渡し演算の結果を返り値として受け取る

# 引数がよく分からない

「Mr.Yuki」と出力したいのですが…

~~~
1 def rename(name)
2 name = “Mr.#{name}”
3 end
4
5 name = “Yuki”
6 rename(name)
7 puts name
~~~
~~~
Yuki
~~~
この構文では、出力にMr.はつかない「Yuki」になります。

>~~~
1 def rname(name) # renameメソッドで受け取る変数name
2 name =”Mr.#{name}” # renameメソッドで受け取る変数name
3 end
~~~
メソッドの変数には引数で渡した値のコピーが代入されている。

>~~~
5 name = “Yuki” #このnameは全て引数のname
6 rename(name)
7 puts name
>~~~

要するに、引数のnameと変数nameは同じ名前だが別物である

順番を追って解説。

– 5行目:引数`name`に文字列 “Yuki”が代入される
– 6行目:この`name`を引数として

元記事を表示

100日後に1人前になる新人エンジニア(4日目)

#100日後に1人前になる新人エンジニア(4日目)
先日の記事はこちらから
[100日後に1人前になる新人エンジニア(3日目)](https://qiita.com/akilax/items/6c9ba50bfb622279a2e6)

どうもこんばんは。早くも週末が終わってしまいますね。
今日も今日とて更新をしていきます。
今まであまりRailsについて書いてこなかったので
今日はRailsのFormに関して書いていこうと思います。

##Railsのフォーム
なんかいくつかの種類があるんだなあって感じで学んできたけど
いい機会なのでしっかりまとめてみようと思います。

**form_for**
**form_tag**
**form_with**

この3つですね。とりあえずTutorialでは言われた通り書いてみて
うまくいったなって感じでしたが、それではダメだと思ったので一つずつ見ていきます。

##form_for
関連するモデルが用意されている場合はform_forでモデルを渡す。

“`
<%= form_for @user do |form| # @userというイン

元記事を表示

【開発ログ⑯】テーブル変更後のHeroku再デプロイ

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回の実施内容
前回までで有給休暇管理ツールのindex画面にあるリンクボタンには全てリンク先が設定できました。その後記事にはしていませんが、デプロイまで完了し、無事にスクールの発表会が終了しました。今回はデプロイ後にテーブルのカラムを追加し、再デプロイまでの流れを書きます。

– ローカルの編集
– 本番環境でのマイグレーション
– ビューの確認

# 開発環境
前提として開発環境を書くことを最近覚

元記事を表示

Rails6 開発環境構築 [Mac]

#はじめに
Macを使用しRails6の開発環境構築時に行った手順の備考録です。

#手順
###1.Homebrewのインストール
**ソフトウェアのインストールやアンインストールを管理してくれるシステム**
https://brew.sh/index_ja
スクリーンショット 2020-05-24 15.52.20.png
Install Homebrew下部のコマンドをコピーしターミナルで実行

“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`

passwordを求められるので、Mac起動時のpasswordを入力

続いて、Homebrewの

元記事を表示

【RSpec】ArgumentError: wrong number of argumentsエラーが出たら、変数の命名を気にした方がいいかもしれないのですね

##はじめに
“`Controller specs“`に関する記事です。
共通化を行うために変数定義を行った際、命名を適当に行ったら沼ったので備忘録として残しておくことにします!

##環境
ruby 2.6.5
rails 5.2.4.2
rspec 3.7
capybara 2.15
factory_bot_rails 4.11

##エラー内容

####エラー修正前のコード

“`ruby:spec/controllers/posts_controller_spec.rb
require ‘rails_helper’

RSpec.describe PostsController, type: :controller do

context “ログインを必要としないアクション” do
.
.
.
end

context “ログインを必要とするアクション” do

let(:user) { FactoryBot.create(:user) }
let(:login_user) { login(user) }
let(:p

元記事を表示

AtCoderでRuby学習10【第一回アルゴリズム実技検定 DoubleCamelCase Sort】

## はじめに
Ruby学習の一環として「アルゴリズム実技検定」に挑戦します。
そのための学習の中で学んだことをアウトプットしていきます。
今回は「第一回アルゴリズム実技検定」の六問目(DoubleCamelCase Sort)より。
[第一回アルゴリズム実技検定 過去問](https://atcoder.jp/contests/past201912-open/tasks/past201912_f)

今回は、参考になった解答をもとに学ぶことが出来た内容をまとめていきたいと思います。

## 問題
文字列 S が与えられる。
これは、1 つ以上の単語を (間に空白などを挟まずに) 連結したものである。
ここで、各単語は 2 文字以上であり、最初の文字と最後の文字のみが英大文字、それ以外の文字は全て英小文字である。

制約
・S は長さ 2 以上 100,000 以下の文字列である。
・S の各文字は英大文字または英小文字である。
・S は問題文で述べたような単語の連結である。

入力は以下の形で与えられる。

“`ruby
S

入力例
FisHDoGCaTAAAaAAbCAC
`

元記事を表示

OTHERカテゴリの最新記事