Ruby関連のことを調べてみた2021年10月28日

Ruby関連のことを調べてみた2021年10月28日

Sonic PiからLogic Proのソフトウェア音源を使う

# まえがき
こんにちは。最近Sonic Piを触り始めてライブコーディングを楽しんでいます。
Sonic Piはとても有能なソフトウェアですが、ひとつだけ不満な点があります。それは、synthの種類少なくない…!?という点です。というわけで、今回はその問題を解決するために、Logic Proの豊富なソフトウェア音源をSonic Piから呼び出してみようと思います。

# 環境
OS: macOS Big Sur 11.4
Sonic Pi: v3.3.1
Logic Pro: 10.7.0

# 方針
具体的な設定手順を説明する前に、ざっと方針を説明しようと思います。
まずはSonic Piの出力先として仮想MIDIデバイスを設定します。(ちなみにMIDI Outに対応していることを利用するとポケットミクを歌わせることもできるらしいです[^1])
次にLogic Pro側でMIDI入力のチャンネルを各トラックに割り当てます。
基本的には以上の2ステップです

[^1]: [Sonic Piでポケット・ミクを演奏する](https://kuwamai.hatenablog.com/

元記事を表示

CSV.parse で空のフィールドを必ず空文字に変換する

## バージョン情報

“`rb
RUBY_VERSION #=> “3.0.1”
CSV::VERSION #=> “3.1.9”
“`

## 内容

CSV.parse で CSV 文字列をパースした場合、空のフィールドは場合によって nil を返したり空文字を返したりする。

“`rb
require ‘csv’

CSV.parse(%(?,,?\n,”?”,””))
#=> [[“?”, nil, “?”], [nil, “?”, “”]]
“`

空のフィールドを空文字に統一したい場合は `nil_value` オプションを使用するとよい。

“`rb
require ‘csv’

CSV.parse(%(?,,?\n,”?”,””), nil_value: ”)
#=> [[“?”, “”, “?”], [“”, “?”, “”]]

# もちろん nil_value オプションに空文字以外の値を指定することもできる。
CSV.parse(%(?,,?\n,”?”,””), nil_value: ‘?’)
#=> [[“?”, “?”, “?”], [“?”

元記事を表示

ユーザー管理機能初期手順②!

#①.deviseのビュー作成!

前回の続きです!

deviseを使用してログイン機能を実装すると、自動的にログイン画面とサインアップ画面が生成されます!

deviseでログイン機能を実装すると、ログイン/サインアップ画面が自動的に生成されますがビューファイルとしては生成されません!

これは、deviseのGem内に存在するビューファイルを読み込んでいるためです!

deviseのビューファイルに変更を加えるためには、deviseのコマンドを利用して、ビューファイルを生成する必要があります!

#②.rails g devise:viewsコマンド

deviseに用意されたビューファイルをコピーし、app/viewsの配下に配置してくれるコマンドです!

HTMLを修正できるため、カスタマイズ可能になります!

deviseのコマンドで、devise用のビューファイルを生成します!

下記がコマンドです!

“`php
ターミナル
% rails g devise:views
“`

上記の作業でdevise用のビューファイルを生成することができました!

#③.ストロン

元記事を表示

Railsチュートリアル2週目を終えて

#概要
Railsチュートリアル2週目を終えたので、感想を書こうと思います。

##かかった期間
10/10 ~ 10/27 (24~26を除く、約2週間)
合計:約63時間

1週目では約48時間かかったので、2週合計で110時間ほど費やしました。

##開発環境
1週目からクラウドIDEではなくローカル環境で開発に挑戦しました。

– Macbook Pro(13-inch, M1, 2020)
– Mac OS Big Sur 11.6
– VSCode (Visual Studio Code – Insiders 1.62.0)
– Ruby 3.0.2p107
– Rails 6.1.4.1

##1週目と2週目の間にやったこと
1週目を終えた時点で「Rubyのコードが読めない」「なにが書きたいのかわからない」と気づきました。恥ずかしながら。Rubyの基礎力がかなり不足していたのです…。Rubyの力を養うために、「たのしいRuby」で文法をメインに勉強しました。

# 2週目で心がけたこと
1週目では上記の通りコードを読めないことに加え、**コードに対するコメント**を全然

元記事を表示

【Ruby】case whenによる条件分岐

##環境
Ruby 3.0.2
Rails 6.1.4.1

##case whenとは

thenは省略可

“`weather.rb
weather = 0
case weather
when 0 then
puts ‘晴れ’
when 1 then
puts ‘くもり’
when 2 then
puts ‘雨’
else
puts ‘雪’
end

#=> 晴れ
“`

putsを省略するとより可読性が上がり、コード量も減らせる

“`weather.rb
weather = 0
case weather
when 0 then ‘晴れ’
when 1 then ‘くもり’
when 2 then ‘雨’
else ‘雪’
end

#=> 晴れ
“`

case文をif文で書き直すとこんな感じ
“`===“`は、左辺が単独のStringやIntegerオブジェクトの場合“`==“`と同じ動作をする

“`weather.rb
weather = 0
if weather === 0 then
puts ‘晴れ’
elsi

元記事を表示

Rubyではシンボルと文字列ならシンボルの方が早い

## 概要
Rubyで、大量の文字列とシンボルを比較する際にはシンボルの方が早い。

## シンボルの特徴
####Ruby内部で文字列でなく整数として扱われるので、早い。
比較検索の際に、有利なのでハッシュのキー、メソッドへの引数に使える。

####イミュータブルなオブジェクトである。
破壊的変更を意図したくない場合に使える。

## 計算
“`ruby
require ‘benchmark’

Benchmark.bm 10 do |r|

fruits = [‘apple’,’orange’,’lemon’]

r.report ‘string’ do
target = ‘orange’
fruits.each {|fruit| fruit == target}
end

r.report ‘symbol’ do
target = :orange
fruits.each {|fruit| fruit == target}
end
end
“`

##結果
“`linux
user

元記事を表示

VS Code で自動的に RuboCop を実行する (rbenv, asdf 対応)

# はじめに
この記事の通りに設定すると、VS Code 上で Ruby ファイルを保存した際に、自動的に RuboCop が実行され、以下のようにエディタ上にリアルタイムで結果が反映されるようになる。

![](https://raw.githubusercontent.com/noraworld/developers-blog-media-ja/master/vscode-rubocop/Screen%20Shot%202021-10-26%20at%2018.50.17.png)

RuboCop のルールに従っていない箇所に波線が表示され、そこにマウスオーバーすると具体的な警告内容が表示される。

## 便利な点
* `git commit` するたびにいちいち `bundle exec rubocop ` を実行する必要がない
* リアルタイムで修正していけるので、あとから RuboCop の警告修正のためだけの時間を取られることが少なくなる
* `.rubocop.yml` の内容が反映される
* プロジェクトごとにルールが異なる場合にも

元記事を表示

【Ruby on Rails】簡単なAPI作ってみた

##はじめに
どうも、27歳未経験からエンジニア転職を目指しているもきおです。

現役エンジニアに入社してから初期段階でどう言ったことをするのかを聞いたら「まずはAPI開発をやったよ」と言われ、APIってどうやって作るの?と思うと同時に作ってみたい!思いました。

今回は簡単なAPIをRailsで作成したのでここに記載したいと思います。

##そもそもAPIとは?
APIに関しては以下記事で概要を掴みました。
[WebAPIについての説明](https://qiita.com/busyoumono99/items/9b5ffd35dd521bafce47)

本当にざっくりしたイメージだとWEBアプリのViewがないバージョンみたいだなーと感じました。もちろんViewがあるのもありますし、本当にざっくりとしたイメージなのですが。
あとはリクエストに対して返却値を返すという点では関数とかのイメージにも近いかもしれません。

##作成物概要
今回はカテゴリーとアイデアという二つのテーブルを用意しアソシエーションはカテゴリ:アイデア=1:多の関係で作成しております。

リクエストに対する一覧

元記事を表示

CRUD処理 Ruby on Rails(データベース編集方法)

データベースにおけるデータの編集や削除の方法まとめ

***
railsのデータベースについて学んでいる時にCRUD処理について学びましたが、なかなか理解ができずまとめてみました。
※本記事では、ageとnameが保存してあるUsersテーブル上で,データの作成、編集方法を記しました。
***
・Create処理(データの追加)

“`terminal:
$ User.create(name:”A”,age:100)
“`

・Read処理(データを読み込み)

“`terminal:
$ User.all #Usersテーブルのすべてのデータを参照
$ User.find(3) #id名からの読み込み
$ User.find_by(name:”C”)  #古いものから1つ
$ User.where(age:12)  #複数の検索
“`
・Update処理

“`terminal:
$ user = User.find(1) #id(1)のデータをuserに代入
$ user.age = 22 #ageを22に変更
$ User.save #保存
“`
・D

元記事を表示

`Bio::GenBank` なオブジェクトをファイルに書き出す

# `Bio::GenBank` なオブジェクトをファイルに書き出す

`bioruby` で起動したシェルでは、 [`getent` したデータを `savefile` することができる。](http://bioruby.org/doc/Tutorial.rd.ja.html)

`biopython` だと `SeqIO.write()` で書き出すことができる。

しかし、 `bioruby` ではなく Ruby のプログラム内で `Bio::NCBI::REST::Efetch` で取得し、パースして `Bio::GenBank` になったオブジェクトをファイルに書き出したかったので調べた結果を記録する。

## できた方法

`Bio::DB` に実装されている `tags()` と `get()` を使う。

“`ruby
obj = … # Bio::GenBank のオブジェクトが入っている

File.open(“sample.gbk”, “w”) do |f|
obj.tags.each do |tag|
f.puts obj.get(tag)

元記事を表示

ユーザー管理機能初期手順①!

#①.ログイン機能の実装!

ユーザー関連の機能はGemを使用します!

まず、ログイン機能を実装するために、deviseというGemを使用します!

・devise

ユーザー管理機能を簡単に実装するためのGemです!

実際に運用されている多くのRailsアプリケーションサービスで使用されています!

Gemfileを編集します!

追記する場所は、Gemfileの最後の行です!

“`php
Gemfile
# 中略
gem ‘devise’
“`

次にコマンドを実行してGemをインストールします!

“`php
ターミナル
# Gemをインストール
% bundle install
“`

次にローカルサーバーを再起動します!

Gemをインストールした後はrails sをcontrol + Cで一度停止し、サーバーを再起動する必要があります!

これは、インストールしたGemの反映するタイミングが、サーバー起動時だからです!

“`php
ターミナル
# Gemをインストール後
% rails s
“`

次のステップへ行きます!

#②.deviseの設定ファ

元記事を表示

[Rails]初心者でほぼぶっつけ本番で映画レビューサイトを作ってみた件

#前置き
もう3年近く前の話で、すごい今更で記憶もちょっと曖昧ですけど、記録としてまとめてみようと思いました(笑)
就活と学校の進級制作展兼コンテストのために作ったものなので、結構力を入れました

かなり昔に一度だけRuby on Railsを触ったことがあるが、その時はまだjava初心者レベルでhtml/cssやhttpやデータベースなどの知識も一切なかったので、全く理解できず諦めました。
今回は学校の授業でhtml/cssを習って、http関連知識やSQL構文などを少し触ったおかけで、[**チュートリアル**](https://railstutorial.jp/chapters/beginning?version=5.0)を読みながら書いてましたが、思ったより早いペースで順調に進めることができました。

完全に自分の作品なので、試してみたいことをとりあえず一通り詰め込んでみましたw

#画面

###URL
https://moasis.herokuapp.com/
(パソコン画面のために作ったので、スマホ画面のレイアウトは超軽く調整しただけ)
管理者アカウント:julia@exa

元記事を表示

Rails secret_key_baseをherokuの本番環境で適用する

本番環境でRails.application.secrets.secret_key_baseが原因で本番環境でjwtを使うことができなかったのでメモを残します。

### エラーの原因調査
エラーのログ

““
heroku logs -tail
““

““
2021-10-25T12:59:16.093104+00:00 heroku[router]: at=info method=OPTIONS path=”/v1/accounts” host=api-slack-react-ruby.herokuapp.com request_id=b010205a-d1b1-4436-aa04-ad84e944e2ea fwd=”153.246.218.124″ dyno=web.1 connect=0ms service=1ms status=200 bytes=287 protocol=https
2021-10-25T12:59:16.273962+00:00 heroku[router]: at=info method=GET path=”/v1/accounts” h

元記事を表示

Railsの環境構築やデプロイを学ぶ上で役に立った記事

普段はインフラ寄りの仕事をしているエンジニアですが、Railsの環境構築やデプロイについてキャッチアップする機会があり、色々学ぶうちにブックマークが溜まってきました。

同様の内容を学習中の方の参考になればと思い、Qiita記事化します。

## 環境構築関連

### Docker

– [Rails 6.1のDocker開発環境構築をEvil Martians流にやってみた(更新)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_03_25/83450)

– [クジラに乗ったRuby: Evil Martians流Docker+Ruby/Rails開発環境構築(翻訳)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_04_20/79035)

– [Nginx+Rails6.0+MySQL8.0+Adminer:docker-c

元記事を表示

Railsアプリの雛形作成!

#①.railsコマンド

Webアプリケーションを作成するために、これからターミナルに様々なコマンドを打っていくことになります!

Railsに関する動作を行うには、ターミナルにてrailsコマンドを使用します!

Railsに関する命令は、すべてrailsというコマンドから始まります!

rails コマンド名とすることで、さまざまな動作を実行できます!

下記は例となります!

“`php
# railsに続けて、コマンドを記述する
% rails コマンド名
“`

新しいアプリケーションを作成するには、ターミナルでrails newというコマンドを実行します!

#②.rails newコマンド

Railsで新規アプリケーションを作成する際に使用します!

このコマンドを実行することで、Railsアプリケーションの雛形が作成されます!

コマンドを実行する際には作成したいアプリケーション名を最後につけてrails new アプリケーション名とコマンドを実行します!

下記は新規Railsアプリケーションの作成の例です!

“`php
# Railsアプリケーションを作

元記事を表示

Ruby gemのコードを読んでみよう。(初期設定編)

##概要

ruby gemのコードの中身をデバッグしながら読む方法についてまとめます。

本記事では、binding.pryを埋め込んで任意の場所をデバッグできるところまでの設定部分をまとめます。settingslogicというGemが、ソースの中身も短くリーディング初心者にとっても優しそうだったのでサンプルとして選択しました。

### 環境

mac 11.2.3
ruby 2.7.2
bundler 2.1.4

### 手順

#### 1.リーディング用のディレクトリを作成します。

“`ruby
mkdir gemcode_reading
“`

### 2.ディレクトリ直下で、bundle initして、Gemfileを作成する。

“`ruby
bundle init

# gemcode_reading
# – Gemfile
“`

3.デバッグ用のGemであるpryと、コードリーディングを行いたいGem(今回はsettingslogic)をGemfileに追加。

“`ruby
# frozen_string_literal: true

sourc

元記事を表示

Rubyのヒアドキュメント (行指向文字列リテラル)について

### 概要

Rubyのヒアドキュメント(行指向文字列リテラル)について簡潔に要点をまとめます。
複数行に渡る長い文字列をスッキリ書けます。

## 識別子の種類

### <<識別子 ```ruby word = <

元記事を表示

【Ruby】present?はblank?の真逆のメソッド

##present?
“`!blank?“` を実行するメソッド
“`nil“`, “`””“`, “`” ““`(半角スペースのみ), “`[]“`(空の配列), “`{}“`(空のハッシュ) のときにfalseを返す

##blank?
“`nil?“` + “`empty?“` のようなメソッド
“`nil“`, “`false“`, “`””“`, “`” ““`(半角スペースのみ), “`[]“`(空の配列), “`{}“`(空のハッシュ) のときにtrueを返す

##参考

https://railsdoc.com/page/empty

https://qiita.com/go_d_eye_0505/items/541110cb9821734b0623

元記事を表示

incompatible library version – msgpack.bundle (LoadError) 解決法

# はじめに

“`
require’: incompatible library version – /Users/[name]/rails/rails-tutorial/sample_app/vendor/bundle/ruby/3.0.0/gems/msgpack-1.4.2/lib/msgpack/msgpack.bundle (LoadError)
“`
railsチュートリアルをローカル環境で進めているときにこのエラーに出くわしました。
static-pagesコントローラを生成してから何故かrailsコマンドが使えなくなり、身動きが取れなくなりました。
私の環境にピッタリの記事が中々見つからなかったので書くことにしました。

# 筆者の環境

Macbook Air(M1, 2020)
macOS Big Aur バージョン11.4

`ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]`
`Rails 6.1.4.1`
`Bundler version 2.2.29`

# 解決策

ru

元記事を表示

Rails はじめました [1. 環境構築]

# 要件
– ruby 2.7.4
– Rails 6.1.4
– redis latest
– PostgreSQL 12.2
– nginx 1.20

# 開発環境
– macOS Big Sur
– VSCode
– Docker Desktop

## VSCode プラグイン
– [Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)
– [Rails](https://marketplace.visualstudio.com/items?itemName=bung87.rails)
– [Ruby on Rails](https://marketplace.visualstudio.com/items?itemName=hridoy.rails-snippets)
– [Rails DB Schema](https://marketplace.visualstudio.com/items?itemName=aki77.rails-db-schema)

# Docker 環境

元記事を表示

OTHERカテゴリの最新記事