Ruby関連のことを調べてみた2022年09月18日

Ruby関連のことを調べてみた2022年09月18日
目次

ただMacのターミナルでRubyとRailsを最新バージョンにしたかっただけなのに。。

## はじめに
久々に簡単なアプリを作成しようとして、(作成前ついでにRubyをRailsのバージョンを最新にしておくか)と軽い気持ちでバージョンアップを試みたら思いのほか詰まったので備忘録として残しておこうと思います。

バージョンアップの流れとしては
**1.Homebrewとrbenvのアップデート**
**2.Rubyのアップデート**
**3.Railsのアップデート**
という感じです。早速やっていきましょう。

## 1.Homebrewとrbenvのアップデート
アップデートするコマンドの流れはこちら
“`
$ brew update # Homebrewをアップデートする
$ brew upgrade rbenv && brew upgrade ruby-build
“`
まずターミナルにて“brew update“を実行します。すると早速エラーが
![スクリーンショット 2022-09-17 11.18.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1089852/

元記事を表示

【Ruby】Rubyのわかりにくい文法

### ハッシュの記法の色々

“`Railsコンソール
# ハッシュのキーを文字列で
>> user = { “name” => “tarou”, “email” => “tarou@example.com” }
=> {“name”=>”tarou”, “email”=>”tarou@example.com”}

# ハッシュのキーをシンボルで
>> user = { :name => “test”, :email => “test@example.com” }
=> {:name=>”test”, :email=>”test@example.com”}

>> user[:name] # :nameキーにアクセス
=> “test”

>> user[:test] # 存在しないキーに対応する値にアクセスするとnil
=> nil
“`

そして、Rubyでおそらく一番よく目にする、
この記法に至る

“`
>> user = { name: “test”, email: “test@example.com” }
=> {:nam

元記事を表示

Rubyで外部コマンドを実行する方法メモ

# 前提
– Ruby 3.1.2

# [Kernel.#`](https://docs.ruby-lang.org/ja/latest/method/Kernel/m/=60.html)
– 基本的にはこれを使うことが多い
– コマンドの標準出力を文字列として返す
– 終了ステータスは`$?`で確認する

“`ruby
def exec_command(command)
result = `#{command}`

raise RuntimeError, “`#{command}` is failed.” unless $?.success?

result
end

p exec_command(‘ruby -v’)
=>
“ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin19]\n”
“`

# [Kernel.#system](https://docs.ruby-lang.org/ja/latest/method/Kernel/m/system.html)
– あまり使うことなさ

元記事を表示

クラスメソッドとインスタンスメソッドとinitializeメソッドの備忘録

どれがクラスメソッド、インスタンスメソッド、initializeメソッドか思い出す為に簡単にですがメモします。

### 先に記述内容
“`
class Vegetable

def self.fresh
puts “新鮮な野菜はいかがですか?”
end

def initialize(name, price)
@name = name
@price = price
end

def introduce
puts “#{@name}は#{@price}円です”
end
end

carrot = Vegetable.new(“にんじん”, 120)
lettuce = Vegetable.new(“レタス”, 200)
tomato = Vegetable.new(“イチゴ”, 160)

Vegetable.fresh
carrot.introduce
lettuce.introduce
tomato.introduce
“`
“`:結果
新鮮な野菜はいかがですか?
にんじんは120円です
レタスは

元記事を表示

git push heroku masterで失敗後heroku loginでも失敗した場合

# エラー内容
Railsチュートリアル第9章の最後でgitにpush後、herokuにデプロイしようとしたら以下のようなエラーが発生。
“`
$ git push heroku master
Username for ‘https://git.heroku.com’: ~~~
Password for ‘https://~~~@git.heroku.com’:
remote: ! WARNING:
remote: ! Do not authenticate with username and password using git.
remote: ! Run `heroku login` to update your credentials, then retry the git command.
remote: ! See documentation for details: https://devcenter.heroku.com/articles/git#http-git-authentication
fatal: Authe

元記事を表示

Rack 3.0 で Rack::Server が消えた

とある Ruby のプロジェクトで依存 gem のバージョンを上げたらエラーが出たのでその原因を探った。

# 起こったこと

ある種のウェブアプリ機能を持った gem を開発し,長らく多数のプロジェクトで使っていた。

この gem は [rack](https://rubygems.org/gems/rack) という gem を利用している[^rack]。rack への依存はとくにバージョンを指定していない。

[^rack]: rack を一言で言えばウェブアプリとウェブサーバーの仲立ちをするライブラリー。ウェブサーバーの差異を吸収する働きがあり,ウェブサーバーの取り替えが簡単になる。

ある日,`bundle update` で gem たちのバージョンを上げたところ,rack もバージョン 2.2.4 から 3.0.0 に上がった。
メジャーバージョンが上がったので何かしら非互換性があるかとは予想したが,起動しようとしたら案の定

“`
cannot load such file — rack/server (LoadError)
“`

が出て死んだ。

rack/

元記事を表示

【Ruby on Rails】 Rubocopについて

# Rubocopのインストール

https://github.com/rubocop/rubocop

“`Gemfile
group :development, :test do
gem ‘rubocop’, require: false
gem ‘rubocop-performance’, require: false
gem ‘rubocop-rails’, require: false
gem ‘rubocop-rspec’
end
“`

“`
bundle
“`

“`
touch .rubocop.yml
“`

## 設定例
“`.rubocop.yml
require:
– rubocop
– rubocop-performance
– rubocop-rails
– rubocop-rspec

AllCops:
NewCops: enable
DisabledByDefault: true
Exclude:
– Gemfile
– db/fixtures/**/*
– db/sc

元記事を表示

【Ruby on Rails】Rspec, Factorybot等の導入

# Rspecのinstall

基本的には、document通りやる。
https://github.com/rspec/rspec-rails

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

“`
bundle
“`

“`
rails generate rspec:install
“`

# Factorybotのinstall

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

“`rails_helper.rb
Rspec.configure do |config|

config.include FactoryBot::Syntax::Methods
end
“`
これで、createでfactorybotが呼ばれる

factoryを作成するのは、

“`
rails g factory_bot:model user
“`

元記事を表示

Ruby on Rails をTermuxに導入

# やりたいこと
– termuxにRuby on Railsを導入したい
– ググるといくつか参考になる情報あるが、どれを試しても導入できない

# 環境
– Android 12
– 最小限でMySQLを使用したRailsアプリを作成します

# 構築手順
古いスマホにTermuxを入れてそこにRuby on Railsを導入する。

## Termuxをインストール
※以下ページご参照ください。(「Termuxのインストール」まで)
https://qiita.com/tatuya911/items/840107699190451a4651

:::note info
GooglePlay以外からアプリのインストールする場合は
「不明なアプリのインストールを許可」をしてください。
※自己責任でのインストールになります。
:::

## お決まりのコマンドを実行
`apt upgrade`途中に出てくる選択肢は Enter(N) でOK。
“`shell:Termux
~ $ apt update
~ $ apt upgrade
“`

## 必要パッケージをインストール

元記事を表示

【DDBJ】BioProject から SRA を一気にダウンロードするためにURLのリストを生成する

## はじめに

日本でSRA(Sequence Read Archive)の生データをNCBIからダウンロードしようとすると、速度制限に引っ掛かりとても時間がかかるので、[DDBJ](https://ddbj.nig.ac.jp/search)からダウンロードするのが基本である。

しかし、ダウンロード用のURLを、いちいちブラウザから検索して手入力していると非常に面倒くさいので、BioProjectのIDから、一気にSRAダウンロード用のURLを生成したいと思った。

しかし、DDBJはほとんど日本(と一部のアジア?)でしか使われていないサイトであり、ググってもあまり有効なツールが出てくる気はしなかったので、(DDBJ対応のツールがインターネット上にたくさん転がっているとは思えないため)Rubyで[適当なスクリプト](https://gist.github.com/kojix2/e3bdbcecf7fc59be449a58a16b978522)を書いた。

スピーナーの表示のために、[tty-spinner](https://github.com/piotrmurach/tty-s

元記事を表示

ブランクありのエンジニアが現場復帰して躓いたこと part.1

## これは何?
エンジニアブランク4年強(もう素人)の私が、エンジニア復帰後に、悩んだことや学んだことを定期的に記事にしていければと思い、書いているものになります。
同じような悩みに至った方や共感できる方はいいねいただけると嬉しいです!
※使用中の技術 Ruby on Rails / React(TypeScript)
※ブランクの期間は、マーケティングをしておりました。

# ~ Pager編 ~
![スクリーンショット 2022-09-17 12.28.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2322481/6f92b9c8-8db3-ac65-082d-ef29a6de7526.png)

ショッピングサイトでよく見かけるページ送りの処理を実装しようと思い、参考になりそうな他ページのプログラムを見つけにいく。(コピペ戦略です)
それっぽいの見つかりホッと一安心と思いきや

“`ruby: SnapshotsController.rb

SNAPSHOTS_COUNT_

元記事を表示

Ruby on Rails form-forの記述をform-withへ変更した時、model: @○○を記述するがこのインスタンス変数はどこからやってきたの?

# はじめに
Ruby on Railsでdeviseのgemを導入した際にはコントローラは生成されない。となった時にどこで何を見たらいいの?と思い、分からなかったので、メンターさんに質問して理解した内容をここに記録する。

(自分にしかわからない書き方となっていること、ご了承ください:bow:)

# form-forの記述をform-withへ変更した時、model: @○○を記述するがこのインスタンス変数はどこからやってきたの?

#### form-forの記述
“`
<%= <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> %>
“`
#### form_withの記述
“`
<%= <%= form_with model: @user, url: user_registration_path do |f| %> %>
“`

#### 疑問点。。。
`model: @user`と記述したので、インスタンス変数`@user`はどこかで定義されてる

元記事を表示

ActiveRecordモデルの拡張検討

ActiveRecordモデルの拡張方法にはいくつか選択肢があるので、どういった方法を選ぶのが適切かよくよく考えなおしてみたいと思います

## 今回のストーリー
新規ユーザーは必ず無料のサンプルを受け取ることができるので、ユーザーが作成されたときに、無料サンプル用の注文を作成したい
ただし、受け取れる無料サンプルは一人一つまでで、無料サンプルを提供する販売元と無料サンプルはコードで指定したい

販売元コード: DEFAULT
商品コード: JOIN

![スクリーンショット 2022-09-17 11.01.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89997/0445fa77-d120-534f-a95b-36a9d576133a.png)

## 2種類の拡張方法を試す
1. [scopeを使った拡張を使った拡張](#1scopeを使った拡張)
2. [AssociationExtentionを使ったhas_manyリレーションの拡張](#2associationextentionを

元記事を表示

Dockerにおいてソースコードが即時反映されない問題について

# 背景
現在就職のためのポートフォリオを作成しているのですがその際、Docker環境のrailsでソースコードを書 いているときにソースコードが即時反映されなかったので、即時反映される方法を記しておきます。

# 即時反映させる方法について
自分が調べた限りでは即時反映させる方法は2つありました。

**一つ目ですが**
“`ruby:config/environments/developments.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
“`
これを・・・
“`ruby:config/environments/developments.rb
config.file_watcher = ActiveSupport::FileUpdateChecker
“`
とすれば大丈夫です!
# 何をしているのか?
これは
・ファイルの保存イベントを監視するのか
・ファイルを追跡して変更を監視するのか
の違いがあるらしいです!
“`ruby:config/environments/developme

元記事を表示

これでバッチリ!初心者向けdevise導入の基本

本記事では、以下について記載しています。
* deviseの導入手順
* usersテーブルの作成手順
* デフォルト以外のカラムを追加した場合に必要な処理
* deviseを導入すると使える基本のメソッド3選
* deviseの削除方法

# deviseの導入手順
1\. Gemfileの最後の行に以下を追加
“`
gem ‘devise’
“`
2\. Gemをインストール: ターミナルで以下のコマンドを実行
“`
bundle install
“`
3\. ローカルサーバーの再起動: ターミナルで以下のコマンドを実行
“`
rails s
“`
4\. deviseの設定ファイルを作成: ターミナルで以下のコマンドを実行
“`
rails g devise:install
“`
5\. deviseのビューファイルを作成: ターミナルで以下のコマンドを実行
“`
rails g devise:

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのファイル・ディレクトリ操作の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのファイル・ディレクトリ操作の比較

# Python

https://qiita.com/supersaiakujin/items/12451cd2b8315fe7d054

# Ruby

https://qiita.com/prgseek/items/38f74d99b74baa3b42f7

# PHP

https://qiita.com/daichi87gi/items/111cd922991e4a18d1ef

# Java

https://qiita.com/suema0331/items/03330a663773204afc5f

# JavaScript

https://qiita.com/turmericN/items/28e8bc8fca07285ddffc

# Perl

https://perlz

元記事を表示

rails apiでの複数の値をmapで回してcreateアクションでDBへ保存しようとするとAbstractController::DoubleRenderErrorで苦しめられた話

はじめに

reactで配列を使って作成した値を、一気にrails apiに送ってcreateアクションで保存をしたいと考えていました。
ですが、AbstractController::DoubleRenderErrorを解消することに時間がかかったので、備忘録として残そうと思います。
深夜テンションで、雑に文章を書いちゃってる部分もあるかもしれないので、後で元気がある時に確認して必要があれば修正しようと思います。

どのような記述をしてエラーが起きたか

データやモデル名やカラム名は少しいじってますが、下記のような値がrails apiが来ているとします。

~~~
Parameters: {“_json”=>[
{“quiz_name”=>”問1”, “quiz_status”=>”answered”},
{“quiz_name”=>”問2”, “quiz_status”=>”answered”},
{“quiz_name”=>”問3”, “quiz_status”=>”answered”}],
“quiz”=>{}}
~~~

最初は下記のように記述をしていました。

元記事を表示

eachの入れ子についての備忘録

今日も学んだことを忘れない為にメモします

### 入れ子でeach分を使用する際の方法
以下のように、果物の名前と値段が入った配列があり
“`
fruits_price = [[“apple”, [200, 250, 220],[150,200,300]], [“orange”, [100, 120, 80],[400,400]], [“melon”, [1200, 1500],[500,500,500]]]
“`

以下のように果物の名前とそれぞれの合計額が出力されるコードを記述する
“`
appleの合計金額は670円です
orangeの合計金額は300円です
melonの合計金額は2700円です
“`

### 記述内容
“`
fruits_price = [[“apple”, [200, 250, 220],[150,200,300]], [“orange”, [100, 120, 80],[400,400]], [“melon”, [1200, 1500],[500,500,500]]]

fruits_price.each do |fruit|
sum =

元記事を表示

ActiveStorage に保存した画像のサイズを取得する

ActiveStorage をセットアップ後、

“`ruby
class User < ApplicationRecord has_one_attached :avatarend end ``` のように、モデルを定義して、 ```ruby user.avatar.attach(params[:avatar]) ``` のように、ファイルを添付すると、 ```ruby user.avatar.metadata[:width] user.avatar.metadata[:height] ``` で、幅と高さが取れます。 # 必要なもの - [libvips](https://github.com/libvips/libvips) - `ImageMagick` より `libvips` の方が早いそうなので - [ruby-vips](https://github.com/libvips/ruby-vips) - 画像サイズをとるだけだとこれだけで十分 - 画像のリサイズとかする場合には、[image_processing](https://

元記事を表示

RubyKaigi 2022行ってきたYO!

はいどうもー!最近バイク&カメラにドハマリしているYOです。
先日は三重県文化会館で行われたRubyKaigi 2022に参加しました!数年ぶりのリアルイベントなので、ワクワクする気持ちが押さられません!

初日の早朝に最寄り駅について、これが見えた:
![IMG_1447.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59161/f069c160-cb40-c62d-f9be-ee818c021e10.jpeg)
「津(つ)きました!」
この駅名の表示は、遠くから見るときに「?」に見えるようにわざわざ漢字表記を小さく下側に配置したという。遊びココロがあって自分は好きです。

————
駅から無料シャトルバスも出ていて本当に用意周到です!バスに乗って揺られて5分ほど、三重文化会館に到着しました。
入り口の撮影スポットもあったので、記念写真もバッチリ取りました!

![Image from iOS (17).jpg](https://qiita-image-store.s3.ap-nor

元記事を表示

OTHERカテゴリの最新記事