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

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

[py2rb] namedtuple

# はじめに
移植やってます。
# namedtuple (Python)
“`python
Protein = namedtuple(‘Protein’, (‘description’, ‘sequence’))
“`
https://www.shoeisha.co.jp/book/detail/9784798163642

**独習Python**では、辞書やクラスでも代替できると書いてあります。
# Struct (Ruby)
“`ruby
Protein = Struct.new(:Protein, :description, :sequence)
p1 = Protein.new(‘abc’, ‘setumei’, ‘ATGC’)
puts p1.description
“`
https://qiita.com/jnchito/items/fb4ed2238ee3404b4403

**【初心者向け】順番に意味がある配列はハッシュに置き換えよう**に親切な解説があります。

ただし今回は、これだとp1.p2…p99とか大量発生しそうな気も
# Hash (Ruby

元記事を表示

Rails 7.0 のリリースノートまとめ

## はじめに
2021年9月15日、Rails 7 のアルファ版がリリースされました。
通常、Rails のアルファ版リリースは行わないのですが、フロントエンドに大きな変更が加わることによって、慎重に検証する必要があると判断したみたいです。

ちょうど社内で Rails 7 についてアウトプットする場があり、良い機会なので情報をまとめてみたいと思います。

## 1. フロントエンドのリニューアル
まず Webpacker が廃止され、フロントエンドがリニューアルされます。
ES6 / ESM のブラウザサポートの進歩、HTTP/2 の普及、importmap の新標準に対応するためです。
具体的には、Turbllinks と Rails UJS が Stimulus と Turbo の Hotwire コンビに置き換わります。
node_modules、bundler の設定に依存せず、フロントの開発にありがちな問題も発生しません。

また、Rails と JavaScript + CSS bundler の統合も劇的に改善されたそうです。
Rails の新しい JavaScrip

元記事を表示

【Ruby のまずいコード】リストにある文字列を抽出

# お題

テキスト中から,リストで与えられた文字列をすべて抽出することを考えます。
たとえば

“`txt:検索対象のテキスト(日本国憲法前文)
日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、諸国民との協和による成果と、わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて再び戦争の惨禍が起ることのないやうにすることを決意し、ここに主権が国民に存することを宣言し、この憲法を確定する。そもそも国政は、国民の厳粛な信託によるものであつて、その権威は国民に由来し、その権力は国民の代表者がこれを行使し、その福利は国民がこれを享受する。これは人類普遍の原理であり、この憲法は、かかる原理に基くものである。われらは、これに反する一切の憲法、法令及び詔勅を排除する。
日本国民は、恒久の平和を念願し、人間相互の関係を支配する崇高な理想を深く自覚するのであつて、平和を愛する諸国民の公正と信義に信頼して、われらの安全と生存を保持しようと決意した。われらは、平和を維持し、専制と隷従、圧迫と偏狭を地上から永遠に除去しようと努めてゐる国際社会において、

元記事を表示

最近追加されたrubocop規則を確認してみる?‍♀️?

最近追加されたrubocop規則を確認してみる?‍♀️?

## みんな大好きrubocop
みなさんrubocop?‍♀️?は好きですか?
新しい書き方や効率的な書き方が発見できるし
チームでコーディングスタイルを統一でき、レビューがストレスにならないので僕は良いgemだなと思っています

そんなrubocopですが日々アップデートされ新しい規則が増えています
[リリースノートはこちら](https://github.com/rubocop/rubocop/releases)

最近新しいプロジェクトで最新版のrubocopを入れて実行してみたのですが
Waringがたくさん表示されてびっくりしました

本日は新しいルールで怒られてしまった物を紹介しようと思います

## versionを0.92から1.23にして怒られていたもの

### Style::HashConversion (from 1.12.0)

“` ruby
# bad
Hash[ary]
# good
ary.to_h

# bad
Hash[key1, value1, key2, value2]
# g

元記事を表示

点字には法則がある!Rubyの点字メーカプログラム

ファイル名

この記事はアドベントカレンダー[Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby-challenge)の12/17の記事になります。

## はじめに

皆さん、点字って読めますか?
私は読めません。(でした)

点字とは視覚障害者が文字を読んだり、書いたりするために使う文字です。
エレベータ、電車の券売機、家電等あらゆる生活で見かけることがありますよね。

実はこの点字、ちょっとした法則があることに気づきました。
この記事では点字の法則を解説して、点字を出力するRubyの点字メーカプログラムについて紹介したいと思います。
Rubyのプログラムも

元記事を表示

【備忘録】モーダルで非同期投稿のできる簡単な日記アプリの作成(新規投稿、削除、編集)

![gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341484/7d3500e3-7ce0-e3ca-e436-bd5003d49eb5.gif)
実装環境
Rails 5.2.6
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

#1.アプリの作成

任意の名前のアプリを作成

“`ruby:ターミナル
rails new sample(アプリ名)
“`

#2.Modelの作成

“`ruby:ターミナル
rails g Sample(モデル名) title:string content:text
“`

上記コマンドを実施後に次のファイルができていることを確認

“`ruby:YYYYMMDDXXXXXX_create_アプリ名
class CreateRecipes < ActiveRecord::Migration[5.2] def change create_t

元記事を表示

AWSでrailsを使うときの環境設定

AWSのCloud9で環境設定をする方法についてまとめました。
手っ取り早く環境設定したい人向けなので、コマンドの意味などは省略してあります。

#コマンド
“`
$echo “gem: –no-document” >> ~/.gemrc
“`

“`
$gem install rails -v 6.0.3
“`

“`
$gem install bundler -v 2.2.17
“`

これだけです。Cloud9を利用しているのでとても簡単に環境構築ができますね。
あとは`rails new`を実行すればOKです。

“`
$rails _6.0.3_ new app_name
“`

元記事を表示

艦番号から艦名を調べるAPIを作ってみた

# はじめに

数ヶ月前に、職場の後輩が体調不良になりました。
部署は違えども心配になって聞いてみると、どうやら「いつまでも終わらない受託案件」に心が折れてしまったようでした。

私は良いアドバイスが出来るような立派な人間ではありませんし、このコロナ禍のご時世だとランチに誘うことも憚られます。
それでも自分なりに何か出来るのではないかと色々と考えてみた結果、後輩の好きな海上自衛隊の艦船に絡めたプログラムを作ろうと思い立ちました。

# 仕様

* パラメーターとして艦番号を渡すと、その艦番号に該当する艦名などの情報を返すAPIです。
* 私の実力だとこの程度が限界です…
* APIの仕様はいたって単純で、使えるパラメーターは艦番号を示す`code`ただ1つです。

`https://{APIのドメイン}?code={艦番号}`

* 返却されるデータはJSON形式で、以下のように単純な構造となっています。

“`json:レスポンスのJSONの例
{
“code”: “183”,
“name”: “いずも”,
“class”: “「いずも」型”,
“hullCode”:

元記事を表示

点字メーカープログラムの動画レビュー Part 3 – Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-

## この記事は何?
Qiita Advent Calendar 2021「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-」で投稿してもらったコードを出題者である僕、伊藤淳一が動画でコードレビューしてみました。この記事はその第3回です。

https://qiita.com/advent-calendar/2021/ruby-challenge

第1回と第2回のレビュー動画はこちらです。

https://qiita.com/jnchito/items/26e8bd7c635e3d32e620

https://qiita.com/jnchito/items/d5f71c9ad90f2890647e

### アドベントカレンダー参加者のみなさんへ

ネタバレになってしまうので、自分の投稿が完了するまでこちらの記事(動画)は見ないようにお願いします〜 :pray:

### レビュー対象の記事はこちら!

今回レビューさせてもらったのは以下の11日目から15日目の記事です。投稿してくれたみなさん、どうもありがとうございました!

@universato さ

元記事を表示

[Rails]Cookieとセッションの違い

#はじめに
現在プログラミングスクールに通っています。
就活を始めるにあたって質問されそうなことを言語化しておきたく自分なりにまとめました。

“`
① 簡単な説明
② 1行に要約する
③ 3行に要約する
“`

#Cookieとは

WebサーバーがクライアントPC(クライアントサイド)に預けておく小さなファイルのことです。
クライアントPCが、あるWebサーバーに初めて接続した際に、Webサーバー(サーバーサイド)がクライアントPCの中に、そのWebサーバー専用のCookieファイルを作成します。

クライアントPCがWebサーバーに接続したときには、WebブラウザがそのCookieをWebサーバーに送信します。このような仕組みによって、Webサーバーは、個々のクライアントコンピュータが前回使用していた情報を読み取ることができるようになります。

###Cookieには、Webサーバーによってどのような情報でも格納できる
**例**
・ユーザー名などの接続情報
・ショッピングサイトなどで購入する商品を一時的に保管する“買い物かご”の情報
・氏名や住所、電話番号などの一度登録し

元記事を表示

病院なび AMP化への道

事の発端はGoogleが「2021年6月からCWV(コアウェブバイタル)の評価をランキングシステムに導入する」とアナウンスしたことでした。そのアナウンスにより「病院なび[^1]」でもCWVの向上が優先課題として上がり、その解決策として、病院なびのAMP化を実施致しました。

この記事では、なぜAMPにしたのか、AMPへの切り替えを、どのように進めたのかを記します。
(病院なびではRailsを使っているので、RailsでのAMP化方法となります)

[^1]: 「病院なび」は、全国23万件以上の医療機関・薬局・薬店を検索できる医療機関検索サイトです。https://byoinnavi.jp

# なぜAMP?
まず、AMP(Accelerated Mobile Pages)」とは、Googleが推進しているコンテンツを高速に表示されるための手法で、CWVに優れています。が、その分、制限も多いです。

> AMP はウェブサイトを高速かつユーザーファーストにし、収益化するシンプルかつ堅牢なフォーマットです。AMP は一般的なプラットフォームへの配布を実現し、運用コストと開発コストを削

元記事を表示

【SLOT解析アプリ】RubyでスクレイピングしてGoogleスプレッドシート反映させてみた。

鹿児島でプログラミングスクール講師をやっています。荻原です。
# 作ったアプリ

*待っていれば以下の画像が動きます。▼
slot.gif

スクレイピングしているサイトは、自分のサーバーに構築したWPサイトです。

パチスロ

# 概要
GCP Google Sheets API
・rubyとGoogleスプレッドシート連携
Ruby
・パチスロ合算値のスクレイピング
・Googleスプレッドシートへの書き込み

# 参考記事
スプレッドシートとRuby連携
https://zenn.dev/cumet04/scraps/c471e4aacaa448
https://github.com/cumet04/spreadsheet.rb

【ru

元記事を表示

作品:ルビーチェス(Ruby Chess)

#概要
Odin Projectレッスンに従って作ったチェスゲーム。

レッスンURL: https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-programming/lessons/ruby-final-project

Github: https://github.com/RistoLibera/Ruby_Chess

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613718/9dcfd8e6-8710-ef6a-f23b-d27559895415.png)

作品URL: https://replit.com/@qofgxnm7b/RubyChess?v=1

#使用技術
・Ruby
・Replit
・Git
・GitHub
・Oracle VM VirtualBox

#内容一覧

![3.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

【Rails】ブロック引数yieldとプロック引数&block

##ブロック引数

###yield
自分で定義したブロック付きメソッドでブロックを呼び出すときに使う。 yield に渡された値は“`| “`と“`|“`の間にはさまれた変数(ブロックパラメータ)に代入される。

“`ruby
# ブロック付きメソッドの定義の働きは与えられたブロック(手続き)に引数1, 2を渡して実行すること
def foo
yield(1, 2)
end

# 「2引数手続き、その働きは足し算をして印字する」というものを渡して実行させる
foo { |a, b| a + b }
#=> 3
“`

– “`yield“`の部分にメソッド“`hoge1“` “`hoge2“`のそれぞれのブロックの中身をそのまま置き換えたイメージ。

“`ruby
# users_info = {
# “kato” => {
# :id=>1,
# :age=>30,
# :birthday=>’1990-01-01′},
# “yamada” => {},
# “suzuki” => {}
# }

def foo
users_info

元記事を表示

PG::DuplicateTable: ERROR:を改善

# 状況

マイグレーション時に下記のエラー表示がありました。

“`irb
PG::DuplicateTable: ERROR: relation “tasks” already exists/Users/****/task_app/db/migrate/20211216010101_create_tasks
“`

# 環境

+ Rails 6.0.3
+ PostgreSQL 14.0

# 改善

冒頭のエラー文の通り、Tableが重複しているようなので下記の手順で重複分を削除しました。

DB内を確認

“`irb
$ rails db
“`

\dを入力して一覧表示

“`irb
# \d

List of relations
Schema | Name | Type | Owner
——–+———————-+———-+——-
public | ar_internal_metadata | table | ****
public | schema_mig

元記事を表示

Intel MacBook Pro のサーマルスロットリングの状況を Mackerel で見てみる

これは [Mackerel Advent Calendar 2021](https://qiita.com/advent-calendar/2021/mackerel) の16日目の記事です。

Mackerel チームでアプリケーションエンジニアをやっている inommm です。

この記事では Intel MacBook Pro がサーマルスロットリングしている状況を Mackerel へ投稿し可視化した様子を紹介します。

# サーマルスロットリングとは
昨今の CPU は動作周波数を動的に調整できるようになっています。
過度な発熱を防ぎ、システムを守るために動作周波数を落とすことを、サーマルスロットリング (Thermal Throttling) と呼ぶようです。

先日の @tatsuru さんの [記事](https://wtatsuru.hatenadiary.com/entry/2021/12/05/191709) によると M1 チップはあまり発熱しないとのことですが、手元の Intel な MacBook Pro ではどの程度サーマルスロットリングが発生しているのか

元記事を表示

【Ruby のまずいコード】最初の n 個の素数

# お題

最初の $n$ 個の素数を配列で返すメソッドを書いてください。
たとえば `4` を与えると `[2, 3, 5, 7]` を返します。
`0` を与えると空配列 `[]` を返します。

素数を得るのは標準添付ライブラリー [prime](https://docs.ruby-lang.org/ja/3.0.0/library/prime.html) を使いましょう。

# コード

## コード 1

“`rb
require “prime”

def prime_numbers(n)
result = []
count = 0
Prime.each do |prime_number|
break if count == n
count += 1
result << prime_number end result end ``` ## コード 2 ```rb require "prime" def prime_numbers(n) result = [] Prime.each do |prime_number|

元記事を表示

Railsチュートリアルのサンプルをローカルに構築した際のエラーとの格闘と解決

# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

railsチュートリアル(第6版)のコードサンプルをGitHubからフォークして、ローカルに構築しようとした時に色々なエラーと格闘して、解決したためその流れを記録&共有です。
(README.mdを元に「第6版の11章を動かす」までの流れです。)

# 流れ
1. 本リポジトリをクローンし、該当のディレクトリへ移動します。
→問題なく実行できました
1. 必要なパッケージをインストールし、bundle install(本番環境でのみ必要なgemはスキップ)します。
→問題なく実行できました
1. データベースを移行します。
→ここで躓きました?

# エラーとの戦い
ここから長い戦いとなりました?
## rake-12.3.3がありません?
「3.データベースを移行します。」の`rails db:migrate`を実行すると、

“`
Could not find rake-12.3.3 in any of the sources
R

元記事を表示

Rubyプログラミング問題にチャレンジしました! -改訂版・チェリー本発売記念-

この記事は、[Qiita Advent Calendar 2021「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-」](https://qiita.com/advent-calendar/2021/ruby-challenge)の16日目(12/16)の記事です。

## 自己紹介と参加した理由
はじめまして、@libru1 (りぶりゅわん)こと、リブリュと申します。
改訂版ではありませんが、チェリー本お世話になっております。
縦書をこよなく愛し、普段使用している行列変換transposeとか使うと出来るんじゃないかなと
ぼんやり思い、チャレンジさせていただきました。

## プルリクエスト

https://github.com/JunichiIto/tenji-maker-challenge/pull/13

## ロジックの解説
メイン処理to_tenjiの流れと、実行時のイメージを解説します。

“`ruby:
def to_tenji(text)
letters = split_and_normalize_letter text

元記事を表示

1年で使える言語が3つも増えた話

QiitaAdventureCalender初参加のCercilといいます。正直そんなにQiitaに詳しくないので、お見苦しい点などがあっても許してください。
#1 お前誰?
・情報系学生の末端(高専4年生)
・C言語アンチ
・JavaScriptアンチ
・プログラミングよわよわな人
・頭良くない

こんな感じにQiitaのカレンダーに書き込むことすら恥ずかしい低スペック学生だと思ってもらえばいいです。

#2 なんで使える言語が増えたのか
実は3年生のころまでC言語とJava(学校の授業で使うだけ)しか書けませんでした….。まわりのPythonとかC++、C#をゴリゴリに書いている友達が僕にとっては **異次元の人** にしか思えなかったです。

####Ruby
4年生になるとうちの学校のI先生がWebアプリケーションを作る講義を始めました。使用言語はRuby、HTMLやJavaScriptといった今までほぼほぼ触れてこなかった言語を授業で触ることになります。慣れない言語ばかりを使う授業についていけなくなった僕は、焦りに焦っていました。
そこで、こんなことを思いついたんです。

元記事を表示

OTHERカテゴリの最新記事