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

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

【RuboCop】RSpecのsubject使用時の規約違反とRuboCopの違反の種類について

#はじめに
RSpecでsubjectを使用して、DRYにしようとする中で、

“`ruby
subject { get ‘/api’, params: params, headers: headers; response }
“`

このように書くと
RuboCopの警告を受けた。

> Do not use semicolons to terminate expressions. (convention:Style/Semicolon)


> 終了の表現にセミコロンを使用しないでください。(規約:スタイル/セミコロン)

#対処
じゃあ、使わない場合はどうするか、、

“`ruby
subject do
get ‘/api’, params: params, headers: headers
response
end
“`
こうすると、無事警告が消えました。
`subject do ~~ end`として、2行に分けることでセミコロンでコードの終端を表現する必要がなくなった、ということですね。

#RuboCopの警告の種類
ずっと、RuboCopの指摘

元記事を表示

injectメソッドについて

現在チェリー本やってます。

その中ででてきた表題の件に関して整理しておきます。

まず、大前提として、to_hexメソッドのリファクタリングの話です。

3段階のリファクタリングで、
①そのまんまのコード
②eachメドレー
③injectメソッドという流れ。

ではまず最初のコードがこちら

“`ruby
def to_hex(r,g,b)
“#”+
r.to_s(16).rjust(2,”0″)+
g.to_s(16).rjust(2,”0″)+
b.to_s(16).rjust(2,”0″)
end
“`

rgbを16進数の2文字ずつに変換している感じです。

injectメソッドはeachやmapなどと同様に繰り返し処理のメソッドである。

“`ruby
配列.inject(初期値の最初の値) {|初期値, 要素| ブロック処理 }
“`

eachメソッドをより短くすることができることがある。

“`ruby
def to_hex(r,g,b)
hex=”#”
[r,g,b].each do|n|
hex+=n.to_s(16).rju

元記事を表示

Ruby

# 概要
Rubyの記法で調査したメモ

# 前提
Ruby初心者

# Rubyの文字列表記法
## 文字列を正規表現として扱う。

“`Ruby:
/Ruby正規表現/
“`

※正規表現の詳細は[公式](http://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html)にて

## 文字列に変数の値を含む

“`Ruby:
:test = “てすと”
puts “いめーじ:#{test}”
“`

## 文字の変数名などを文字列として扱う(「.」など)
※「”」で表現する場合、「”\\.”」とするためURLなどの場合に使用するイメージ。

“`Ruby:
:test = ‘test.com’
puts test
“`

元記事を表示

複数プログラミング言語より Factom ブロックチェーンのアクセス

![1*UfR2neXteow2gUQrScP6BQ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473244/e97ab578-ac24-4a8f-8033-f24eb0533b1e.png)
Kompendium LLC は色んなプログラミング言語知識と効果的な Factom のグループです。
グループのいずれかの目標は Factom エコシステムに多くの開発者を引き続け、案内や簡単に
の理解等を申し上げることです。ブロックチェーンには継続的な拡張のシステムがあるのでソ
フトウェア遷移することが大変です。Factom に興味がある開発者ために様々なプログラミン
グ言語でスムーズに扱うクライアントライブラリの収集を提供し、Factom エコシステムの開
発ツールボックスも拡大する。顧客の選択言語に利用できないライブラリは思いとどまらせる
原因です。それを防止するように Factom エコシステムの開発ツーリングの改善を努力してい
ます。

大分のブロックチェーンはスマートコントラクト機能が無いですが

元記事を表示

パンくず機能の実装と実装の際に出たエラー   ActionController::UrlGenerationError

某スクールの最終課題でパンくず機能を実装した際の思い出です。

# パンくず機能とは
サイトの上の方にあるページの移動の軌跡の表示したもののこと。
スクリーンショット 2020-05-12 23.37.34.png
メルカリでいうところのヘッダーの下にあるこれのことです。


## ①gem ‘gretel’の導入
パンくず機能を実装するのに便利なgem。
お洒落な名前してますね。
Gemfileに

“`ruby:Gemfile
gem “gretel”
“`
を追記します。
bundle installも忘れずに。


###②ファイルの生成

“`ruby
$ rails generate gretel:install
“`
このコマンドで以下のようなファイルができます。

“`rub

元記事を表示

rails routesコマンドについて

【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code

#rails routesコマンドについて
railsでルーティング設定をした後にルーティングの行き先どうなってるっけという時に使えます。

“`
$ rails routes
“`

ターミナルに入力すると

“`
Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index
(以下省略)
“`

という風に表示されれば成功です。

Verb GET : HTTPメソッド、今回はGETです。
GETメソッドはページを表示する操作のみを行う時に使いますね。

URI Pattern : WebサイトにおけるURLのようなものです。

Controller#Action posts#index : リクエストを処理するコントローラーとアクションを表しています。
今回ですと、post_cont

元記事を表示

gem activerecord-import の README を翻訳しました

# 概要
gem [activerecord-import](https://github.com/zdennis/activerecord-import) の [README](https://github.com/zdennis/activerecord-import/blob/master/README.markdown) を翻訳しました。

– 翻訳について
– 翻訳サービス [Deepl](https://www.deepl.com/translator) と [Goole翻訳](https://translate.google.co.jp/) の訳文を参考にしている箇所があります。
– 翻訳対象の[コミットハッシュ](https://github.com/zdennis/activerecord-import/commit/ef425b13e94d258f3c174dc54185fb113433095c)
– 非公式の翻訳です。
– 訳文がおかしい箇所があったら指摘をもらえると幸いです。

– ライセンスについて
– [activer

元記事を表示

【Rubyで解く競プロ】 ボウリングのスコア計算

## はじめに
ボウリングのスコア計算をするプログラムをRubyで書きました。
競技プログラミング初心者向けになっていると思います。
競プロ始めたての方(もしくはRuby始めたての方)には、楽しんで読んでもらえると思います。

## [問題] ボウリングスコア計算

**ボウリングのスコア計算をせよ**
![bowlingscore1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305294/57fa6f06-5cda-38a2-91bb-a811808f1c92.jpeg)

**[入力]**

– 一行の文字列で与えられる。
– 文字と文字の間にはスペースが含まれる。
– 文字は、`0 <= n <=10`のいずれかである。 - 数字は倒れたピン数を表す。 ```txt:入力例 "3 7 10 8 2 8 1 8 1 6 3 8 2 8 2 9 1 9 1 9" ``` **[スコア計算のルール]** - ピン数は10本であり、最終フレームは10フレーム目である。 - 1投目に全てのピンを倒

元記事を表示

ridgepoleで外部キーをつける

### はじめに
データベース作成に`ridgepole`を使ってみました。
マイグレーションファイルが増えず、カラムの追加や削除も簡単なのがいいですね。
ただ、外部キーの作成時に迷ったことがあったので残しておきます。

### 外部キーのつけかた
まずは、GemのGitHubを見てみます。

“`scheme
create_table “parent”, force: :cascade do |t|
end

create_table “child”, id: false, force: :cascade do |t|
t.integer “id”
t.integer “parent_id”
end

add_index “child”, [“parent_id”], name: “par_ind”, using: :btree

add_foreign_key “child”, “parent”, name: “child_ibfk_1”
“`

MySQLではインデックスを勝手に貼ってくれるみたいなので、`add_index`は書かずに、`add_foreign_ke

元記事を表示

隣接するレコードを取り出す方法

**2020年5月13日 追記あり**
## はじめに
メルカリとかで商品詳細見てると、前のアイテムとか次のアイテム、みたいなリンクありますよね。
その機能をどうやって実装するかを書いて行きます。

こんなやつです。
![7b3abffda8c84d4b8892c25a2d515669.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577535/e292026d-317f-69b7-100b-ff95abbccacd.png)

## 環境
環境は関係ない普遍的なやり方ではあると思いますが一応。。。
Ruby on Rails 5.2.4
Ruby 2.5

## 考え方
当初は単純に以下のように書いていました。

“`ruby:items_controller.rb
def show
@item = Item.find(params[:id])
end
“`

“`ruby:show.html.haml
= link_to “前の商品”, item_path(@item.id – 1)
=

元記事を表示

Ruby と Python で解く AtCoder JSC2019 Qual B 等差数列の和 逆元

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder JSC2019 Qual B – Kleene Inversion](https://atcoder.jp/contests/jsc2019-qual/tasks/jsc2019_qual_b)*
Difficulty: 797

今回のテーマ、等差数列の和 + 逆元
# Ruby
`転倒数`って初めて聞きますが、例`1 3 2`について、どのような`転倒数`になるのか見てみます。

|K|3|2|1|合計|
|:–|–:|–:|–:|–:|
|132|||1|1|
|132 132||4|1|5|
|132 132 132|7|4|1|12|
`1 3 2`が一つで`1`、二つ並んで`1 3 2 1 3 2`

元記事を表示

Day10

Dailyドリル5 Rubyの解説

・Rubyの場合メソッドの内側と外側ではスコープが異なりますので、メソッド内からpostsには直接アクセスすることができません。

・そのため、各メソッドに引数としてpostsを渡して、その返り値をpostsに再代入しています。

・各メソッドでは、仮引数がa_postsという名前で定義されています。そのため、渡されたpostsをa_postsという変数にコピーして、メソッド内で使用することができます。

→冷静になって、再考する必要あり。
言葉の定義や変数の受け渡しを復習すべし。

元記事を表示

chart.js使ってグラフ作成してみた

#Railsで作成したアプリにグラフを簡単に入れる方法

##環境

ruby 2.5.0p0
Rails 5.2.4.2
slim

##サンプルイメージ

こんなグラフが簡単に出来上がります。

スクリーンショット 2020-05-12 18.20.43.png

##手順

gem インストール

“`
$ gem ‘chart-js-rails’, ‘~> 0.1.4’
“`

“`
bundle install
“`

chart.js インストール

“`ruby:package.json
{
“name”: “hoge”,
“private”: true,
“dependencies”: {
“chart.js”: “^2.7.1” ←★追記
}
}
“`

元記事を表示

Rails6でDBと連動する動的な多段セレクトボックスの作り方【Ajax不使用】

## 使用言語・前提
– Ruby(Ruby on Rails 6.0)
– JavaScript(jQuery)
– formではbootstrapformを利用。

## 実現したいDBと連携する動的な多段セレクトボックスとは?
大、中、小のカテゴリのモデルが存在していて、これからのモデルはリレーションされているとします。

“` large_category.rb
class LargeCategory < ApplicationRecord has_many :medium_categories, dependent: :restrict_with_error end ``` ``` medium_category.rb class MediumCategory < ApplicationRecord belongs_to :large_category has_many :small_categories, dependent: :destroy end ``` ``` small_category.rb class SmallCategory < Appli

元記事を表示

rails routes member と collectionの違い

#rails routes member と collectionの違い

`resources(RESTfulルーティング)`を利用すると7つのデフォルトのルーティング`(index,create,new,edit,show,update,destroy)`が自動で生成されます.

ただ,自分で定義した独自のアクションへのルーティングを設定する場合は`member`または`collection`というオプションを利用する必要があります。

その際に,memberとcollectionの違いが気になり調べたので両者の違いをまとめます。

## 目次
* [はじめに](#はじめに)
* [やりたいこと](#やりたいこと)
* [やり方](#やり方)
* [おまけ](#おまけ)

## はじめに

検証用にPostsコントローラへのルーティングファイルを作成します.

“`ruby:routes.rb
Rails.application.routes.draw do
resources :posts
end
“`
デフォルトで以下の7つのルーティングが生成されます.`(ind

元記事を表示

【開発ログ⑨】社員登録ができなくなった?

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

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

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

#今回の実施内容
前回までで、支社と社員の登録が完成しました。記事では取り上げませんが、ビューページの左カラムに登録した支社名と支社に所属する従業員数が、メインビューの有休管理一覧の「名前」と「入社日」に登録した社員のものが各表示されるようにeach文を記述しました。結果は以下のとおりです。
スクリーンショット 2020-05-12 19.29.35.png

元記事を表示

【開発ログ⑧】社員登録しようとしたら、ウチの会社じゃない支社も出てきた

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

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

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

# 今回実施する内容
支社登録が実装できたので、続けて社員の登録の実装を行います。社員は必ず1つの支社に所属しています。社員の登録画面のポイントは、ユーザーが登録した支社を選択できるようにすること。逆に他のユーザーが登録した支社は自社に関係なので表示させたくありません。手順は概ね[前回の記事](https://qiita.com/iczo32/items/6014cf45afd07b3261a8)と同じな

元記事を表示

【開発ログ⑦】Posticoにデータがない事件

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

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

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

# 今回実施する内容
前回までで、仮データを入れたビューが完成しました。今回は、支社の登録を行って、きちんとデータベースに反映されているかを確認します。

– ルーティングの編集
– 支社登録用のbranchコントローラーの作成
– 支社登録を行うビューページを作成
– メインページに支社登録へのリンクを作成
– ローカルブラウザから支社登録の実施
– データベースに保存されているか確認できればOK

#

元記事を表示

Ajaxを使った非同期通信の流れ

Ajaxを使った非同期通信の流れ

#非同期通信(Ajax)とは?
ブラウザが再読み込みされることなく通信が行われる通信方式
画面をリロードしなくても、情報が反映されるWepアプリケーションの機能!

AsynchronousJavaScriptXML
の略!エイジャックスと読む。
レスポンスのデータに JSONというデータ形式を使う。

#JSONとは?
JavaScriptObjectNotationの略で、データ交換を行うための一種
Rubyのハッシュと同様、キーとバリューの組み合わせ。
例){ name: “yamada”}みたいな

#turbolinksを消す
gemfilre
application.html.haml
application.js

#RailsのjQuery導入
#
“`
gem ‘jquery-rails’
“`
#application.js
“`
//= require jquery
//= require jquery_ujs
“`

#非同期通信の実装の全体の流れ
1,JavaScriptを利用してリクエストを行う
2,

元記事を表示

【超簡単!】【Rails】ancestry 親子孫を一括管理

# ancestryとは
Ruby on Rails ActiveRecordモデルのレコードをツリー構造(または階層)として編成できるようにするGemです。
親、子、孫のような関係を一括で管理する。

# 使い方

1、Gemfileに記述

“`
gem ‘ancestry’
“`

2、下記コマンドを忘れないように。サーバーの再起動も合わせて。

“`
$ bundle install
“`

3、categoryモデルを作る。

“`
$ rails g model category name:string
“`

4、マイグレーションファイルの記述を反映

“`
$ rails db:migrate
“`

5、先ほど作ったcategoriesテーブルにancestryのカラムを作成する

“`
$ rails g migration add_ancestry_to_category ancestry:string:index
“`

6、追記した内容もDBに反映させる

“`
$ rails db:migrate
“`

7、モデルにancest

元記事を表示

OTHERカテゴリの最新記事