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

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

include?メソッド

##include?メソッド
include?メソッドは指定した要素が、配列中に含まれているかを判定するメソッドです。
[公式リファレンス](https://docs.ruby-lang.org/ja/latest/method/Array/i/include=3f.html)

例)以下のように使用します。

“`
array = [“foo”, “bar”]
puts array.include?(“bar”)
#=> true
puts array.include?(“hoge”)
#=> false
“`

今回は呼び出しをarray123(nums)を使い、以下の出力結果になるようになります。

出力例
array123([1, 1, 2, 3, 1]) → True
array123([1, 1, 2, 4, 1]) → False
array123([1, 1, 2, 1, 2, 3]) → True

“`ruby:ruby
def array123(nums)
if nums.include?(1) && nums.include?(2) && nums.

元記事を表示

【Rails6.0/Bootstrap】RailsアプリにBootstrapをGemで導入する方法

## 概要

Rails6.0のアプリにBootstrap4.5を導入する方法をまとめました。
フロント開発に便利なCSSフレームワーク「Bootstrap」をRailsに導入したい方は、ぜひご参考下さい!

【参考】

* [Bootstrap 4.5 公式ドキュメント(日本語)](https://getbootstrap.jp/docs/4.5/getting-started/download/#rubygems)
* [bootstrap-rubygem README](https://github.com/twbs/bootstrap-rubygem/blob/master/README.md)

## 想定読者

“`:想定読者
1. RailsアプリにBootstrapを導入したい
2. でも、記事が多すぎて、結局どのGemを入れて良いのかわからない…!
3. なんとか入れたはいいけど、CSSが適用されない…??
“`

本記事では、公式ドキュメントやGemのREADMEの記載を解説しつつ進んでいきます。
僕自身「公式に全部書いてあるなあ…」と実感できたいい例で

元記事を表示

Github Actionsでプロジェクトに新しく追加されたgemを通知する

## はじめに

プロジェクトに新しいgemが追加された場合、そのgemの追加が本当に適切かコードレビューで見るべきポイントの一つだと思います。
とくにレビュアーが知らないgemの場合は、そのgemがどの程度活発にメンテされているか、技術的負債に繋がりかねないレガシーなgemでないか等、気にするべきポイントは多いと思います。
そんな訳で新しく追加されたgemをコードレビュー時に確認しやすくする為に作ったgithub actionを紹介します。

## 何が出来るの?

pull_requestイベントのアクションとして実行することで、gemが新しく追加されたら作者・概要・最終更新日・ホームページといった情報をコメントで通知してくれるようになります。

![Demo](https://i.gyazo.com/7b87cc40ca21eb528b067fddb57ecc03.png)

## 使い方

Gemfileが更新された場合に通知する設定例。

“`yaml
name: New gems

on:
pull_request:
paths:
– Gemfil

元記事を表示

【2020年クリスマス版】こどもとプログラミングしよう。Coderdojoからプログラミングトイまで

2歳息子、4歳娘の子育てをしている開発職な母です。[プログラマが小学生にScratch教えた話](https://qiita.com/kaz_goto/items/5f9eb203f0d50cc5b144) にあやかり子どもとプログラミング事情の話です。会社ではSlackで #z_papamama というチャンネルを立て :baby: になごんだり育児話に笑わされたりして過ごしています。

**ある日の私の日常 :**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/ae307f96-71a8-0d0e-5712-f7b9d4f4e7e9.png)
さて

ホリデーシーズンということもあり、プログラミング系トイをプレゼントに考えたりする同士もいるようです。プログラミング教育!我が家のチビはJavaの「J」と「し」の字の区別もつかないような年頃ですがいずれ始まるプログラミング教育世代。あるママ社員から toio かLEGO (BOOST?WeDo?) の違いに悩んでいるという相談

元記事を表示

Google Mapsに複数のマーカーと情報ウィンドウを表示

#はじめに
Google Maps Platformを利用してGoogle Mapsに複数のマーカーと情報ウィンドウを表示する方法をまとめました。
テーマは「javascript初心者によるjavascript初心者のための解説」です。丁寧すぎたかも。

#前提

Maps JavaScript API と Geocoding API のAPI KEYを取得している前提で進めます。
未取得の方は下記などを参考にしてみてください。

– [Google Maps API を使ってみた](https://qiita.com/Haruka-Ogawa/items/997401a2edcd20e61037 “Google Maps API を使ってみた”)
– [Get an API Key(Google Maps Platform)](https://developers.google.com/maps/documentation/javascript/get-api-key?hl=ja “Get an API Key”)

##バージョン
ruby 2.6.3
Rails 6.0.3

元記事を表示

Sonic Piによるオーディオプログラミング例

Sonic Pi
===

[オーディオプログラミング言語 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/audiolang)

# 概要

https://sonic-pi.net/

Ruby言語をベースに音楽用機能と実行環境一体型IDEを含めたライブコーディング用言語環境。サウンドエンジンはSuperColliderを使用する。Raspberry Piでも動く。

開発はOvertoneと同じくケンブリッジ大コンピュータ研究所のSam Aaron。

# 実装例

## サイン波生成

Sonic PiはRubyの言語内DSLなので構文的にはRubyのものがすべて使えます。Sonic Pi 3.2.2では最新に近いRuby2.7.1がベースとなっており、Rubyのバージョンアップにもこまめに追従しているようです。とはいえSonic Piによる音楽生成には複雑なロジックや最新機能が必要になることはあまりないと思います。
音程は周波数による指定ではなくMIDIノートナンバーで69(=A440)と指定します

元記事を表示

実用rubyワンライナー

# なぜrubyワンライナーか

要約すると日々の業務で発生する雑な文字列処理をやっつけるのにrubyめっちゃ便利

## なぜワンライナーが必要か

1MBやら1GBある文字列を雑に処理したいときってのは結構存在する
例えば、ログやメディアの解析データ、gitコマンドの出力等に「hogeの出現間隔って最小どれくらい?」みたいな調査を行いたいことがある

そういったとき背筋を伸ばしてエディタ立ち上げてpython書くのも良いが、いかんせん怠いしめんどいし遅い

出来ればググる速度で結果を出したい
そういったとき、シェルコマンドを駆使してコマンドラインに直接ゴリゴリ書いていくワンライナーが効力を発揮する

## rubyワンライナーで何ができるか

主に文字列処理。他にもいろいろできるが、今回は割愛する

## なぜ文字列処理をrubyでワンライナーを行うか

rubyのメリットにこの辺がある

– `-e`や`-n`などワンライナーに便利なオプション
– 強力な正規表現
– 数値処理もできる
– `each_with_object`や`each_cons`など魅力的な関数がある

元記事を表示

eachメソッド, Fibonacci数列

# Fibonacci数列

fib(0) = 0,

fib(1) 1,

fib(n-2) = fib(n) + fib(n+1) (n>=0)

# 「each」メソッド

Fibonacci数列のプログラムを書く際にeachメソッドを用いる

eachメソッドは配列の要素を順番に取り出すものである

記述例を以下に示す

“`ruby
オブジェクト.each do |変数|
動作記述
end
“`

# Fibonacci数列のプログラム

“`ruby
require ‘./assert_equal_final.rb’

def fib(n)
return 0 if n == 0
return 1 if n == 1
return fib(n-1) + fib(n-2)
end

objects = [[0,0],[1,1],[2,1],[3,2],[4,3],
[5,5],[6,8],[7,13],[8,21],[9,34],
]

objects.each do |index,expected|
puts assert_equal(expec

元記事を表示

【RSpec】letの利点が分からないので、letとbefore両方試してみた

## はじめに
RSpec学習中に「letとbeforeなら、letを使ったほうが無難」ということを耳にしました。しっかり理解した上で、letを使いたいと思いletとbeforeの違いを調べたところ、淡白な解説を読むよりも、具体例を示したほうが一目瞭然であることに気づき、備忘録としてまとめることにしました。

そこで、本記事では`userモデルの単体テスト`を例に、beforeとletを使用した時の挙動の違いを示します。

## 使用技術
– gem
– devise
– factory_bot
– rspec

## 準備
– deviseで、ユーザモデルを作成
(https://qiita.com/Hal_mai/items/350c400e8763ce0487a3)
– factory_botで、テストデータを用意
– passwordは、存在チェックのvalidationがかけられているため、敢えて空白を代入し、保存時にエラーが出る前提のuserデータを用意しました。

#### テストデータ(user)
“`rb
FactoryBot.define do
fa

元記事を表示

active-hashを用いた場合のFactoryBotでダミーデータを登録する方法

現在、techcampにて最終課題のFurimaアプリの作成中です。

Active-hashを用いた場合に
FactoryBotにてデータを作成する方法でつまずいたので、
自分用メモのために、記録しておきます。

“`ruby:app/models/prefecture.rb
class Prefecture < ActiveHash::Base self.data = [ {id: 1, name: '--'}, {id: 2, name: '北海道'}, {id: 3, name: '青森県'}, {id: 4, name: '岩手県'}, {id: 5, name: '宮城県'}, {id: 6, name: '秋田県'}, {id: 7, name: '山形県'}, {id: 8, name: '福島県'}, {id: 9, name: '茨城県'}, {id: 10, name: '栃木県'}, {id: 11, name: '群馬県'}, {id: 12, name: '埼玉県'}, {id: 13, name: '千葉県'},

元記事を表示

【個人アプリ作成】情報管理アプリ制作4日目

Toshiです! ああ、、、、2日間も取り組みをできていなかった。。。

リスタートせねばですね。がんばります。

#今日やったこと

>・メイン画面のイメージ、イメージを検索、デザイン
・タグ付機能の勉強
・タグ検索機能の勉強
・タグメンション機能の勉強

それでは書いていきます。自分のインプットをアウトプット。

#メイン画面のデザインについて

初日ではログイン画面と新規登録画面と機能を実装しました。画面のイメージはあれからは少し離れてもいいのかなと考えています。
学校のメンバーがデザインに関してすごくいい情報共有をしてくれて参考に載せます。

・【初心者必見】Bootstrapのテンプレートの使い方を解説 <Bootstrap>
https://blog.codecamp.jp/bootstrap-template-howto

・おすすめのChrome拡張機能「Wappalyzer」を紹介!色んなサービスのプログラミング言語やフレームワークが丸わかり! <しまぶーのIT大学さん>
https://youtu.be/q92r_WrQjoY

元記事を表示

ActiveHashによるカテゴリー選択

# ActiveHashによるカテゴリー選択
## ActiveHashとは
 都道府県名などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるGemです。また、このGemを使うことでデータベースに47の都道府県名のカラムを作ることなくデータを管理することができます。今回は私が作成中のアプリケーションの例で紹介していきます。
 アプリケーションの説明として、収入の分類(給料、ボーナス、副業etc)など決まった選択肢をカテゴリー選択できること目標とします。

公式ページはこちら↓↓↓
https://github.com/zilkey/active_hash
## Gemのインストール

開発環境 rails 6.0.0

GemfileGemfileに追記する↓↓↓

“`ruby
gem ‘active_hash’
“`
引き続きbundle installを実行します。

## モデルの作成

Incomeモデルを作成します。

“`ruby
rails g model income
“`
マイグレレーション

元記事を表示

チャート式ruby-IV(Recursive Fibonacci)

# お題:Fibonacci数列

fib(n) = fib(n-1)+fib(n-2)
0 1 1 2 3 5 8 13 21 …

をrecursion(再帰)で求めなさい.

# 解説

以下はTDDのバイブルのKent Beck本[^TDDbyKentBeck]に載っていたののアレンジです.chart式の解法,解説,発展のサイクルがめちゃくちゃ短くなって,TDDのred, green, refactoringに対応している感触を掴んでください.

[前回](https://qiita.com/daddygongon/items/f6cea87314ee26e130ea)作ったassert\_equal.rbをcodes(作業directory)にcopyしておいてください.

# fib(0) = 0

Fibonacci数列の初項は0です.

1. **red** まずは表示させてみます.

“`ruby
p fib(0)
“`

ないよね.
2. **green** そこで,defします.

元記事を表示

RailsのFindersに検索ロジックをまとめる

# はじめに
GitLabのソースコードを読んでいて見つけたのですが、

GitLabのプロジェクトではモデルが肥大化しない様に、複雑な検索ロジックに関して

`finders`フォルダをきって、使っている様でした。

それに関してまとめます。

# Finders

GitLabのプロジェクトでは`app/finders`フォルダに複雑な検索ロジックがまとめられています。

おそらく、複数のモデルが関わってくる様な検索に関して使われている様です。

# 使い方

Userが持つProjectを、特定の条件で検索する様な場合にモデルに書く場合下記の様になると思います。

“`ruby
class User < ApplicationRecord def projects_filtered_by(filter) # 検索ロジック end end projects = user.projects_filtered_by(params) ``` これを、Findersを使う場合 ```ruby class UserProjectsFinder def initi

元記事を表示

コントローラーを追加せずに、Viewを追加する方法

Qiita初投稿です!:v_tone2:

現在ポートフォリオ作成中で、以前Twitterでつぶやいたことを、詳しくまとめて記事にしたかったというのが投稿の経緯です。

今回はタイトルにある通り、コントローラーを追加せずにViewのページを追加する方法です。

自分のポートフォリオでは、ログイン前の画面とログイン後の画面を分けていたので、どうしても7つのアクションではカバーできないな…ということが起こりました。
今回は”top”という名前で新しいページを作ったので、それを例に挙げたいと思います。

### 実装の手順
1. コントローラーに好きな名前のメソッドを定義
2. メソッド名と同じ名前のViewファイルを作成
3. ルーティングの設定
になります。

## コントローラーに好きな名前のメソッドを定義
![スクリーンショット 2020-12-02 19.49.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681943/e57582d9-bd93-e2ed-7ab4-589ea67b63f8.

元記事を表示

railsで特定のマイグレーションファイルをロールバックする

migrationファイルをロールバックしたいが、ただロールバックするだけでは一つ前の物しか適用されないため、IDを指定して任意のファイルをロールバックする方法。あくまで備忘録です。ご指摘などあればご鞭撻のほどよろしくお願いします。

まずは、マイグレーションファイルの状態を確認する。

“`
% bundle exec rake db:migration:status
“`
`db:migration:status`で状態を確認できる。

“`
Status Migration ID Migration Name
————————————————–
up 20201120034343 Devise create users
up 20201343220111 Create snscredentials
up 20201699490534 Create houses
up 20201202100051 Create addresses
“`

元記事を表示

class

\![ruby-2.7.0p0]()

本ページは大学講義における個人メモです

# class

## 基本

簡単なクラスを書いてみるとこんな感じ

“`ruby

class Hello
def initialize
@name = gets_name
puts_hello
end

def puts_hello
puts “Hello #{@name}.”
end

def gets_name
name = ARGV[0] || ‘world’
return name
end
end

Hello.new

“`

ポイントは以下の通り

– `def initialize` がコンストラクタ
– `@<変数名>` がインスタンス変数
– 今回の場合、 `@name` がそれ
– pythonのように変数宣言はいらないよう…
– `

元記事を表示

管理者機能の実装【Rails】

#はじめに

現在ポートフォリオ作成のため、補助金の記事検索・閲覧ができるアプリケーションの作成をしています。記事の投稿は全てのユーザーができるものではないため、今回、管理者ユーザーを設定することで閲覧するユーザーとの差別化を図りました。アウトプットのため本記事を投稿しています。

[【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]](https://qiita.com/tanutanu/items/7ce8826615f1af605164)

今回は上記の記事を参考にさせていただきました。ありがとうございました。

環境:Rails 6.0.0

#1.前提
既にユーザーの管理機能はdeviseというGemを使用して、実装できていることを前提としております。

“`ruby:Gemfile
gem ‘devise’
“`

#2.既に実装済みのUserテーブルへAdmin(管理者)を追加する

“`ruby:ターミナル
rails g migration AddAdminToUsers
“`

こちらのコマンドを実行すると、、

元記事を表示

Rails ユーザー認証方法

#はじめに
オリジナルアプリにユーザー認証機能を実装しました。忘れないように書き記します。

#目次
1.ユーザー認証(Basic認証)とは
2.コントローラーへの記述
3.環境変数の設定

#1.ユーザー認証とは
Webアプリケーションへのアクセスに対するパスワード設定のこと。一致したユーザーのみがアプリケーションを利用できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703987/c3634006-9651-1102-4f6f-6aa4282c08e4.png)

2.コントローラーへの記述
コントローラーは最上位となるアプリケーションコントローラーに記述する。「username」及び「password」は環境変数で設定したものを読み込む。

“`ruby:app/controllers/application_controller.rb
before_action :basic_auth

private

def basic_auth
authen

元記事を表示

emacs org-mode

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# 振る舞い

– ~/.my\_helpにmy\_helpのmemoが保存されます.
– そのファイルから必要な情報を取り出し,
– そのファイルの操作を行う.

という単純なアプリです.なので,基本的な編集操作はemacs org-modeがあればできます.viとかvscodeでもorg-modeは用意されていますので,editorを変更してそのまま使えます.

# emacs org-mode

ここでは,org-modeの使い方を紹介します.qiita\_orgでも同じです.

## 概要

org-modeはemacsに組み込まれているmajor-modeの一つで,TODOなどが書きやすい機能が用意されています.それだけでなく,pdf出力やmd・h

元記事を表示

OTHERカテゴリの最新記事