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

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

簡単な計算を行うRubyプログラムの作成

二桁以上の整数を入力すると、十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するプログラムをRubyで作成してください。2桁の数字以外が入力として与えられた場合を考慮する必要はありません。

“`:sample.rb
> 二桁の整数を入力してください
> 15

# 1 + 5と 1 * 5をそれぞれ計算

> 足し算結果と掛け算結果の合計値は11です
“`

“`:雛形
def addition(a, b)
# 10の位と1の位の数字に対して、足し算を行う

end

def multiplication(a,b)
# 10の位と1の位の数字に対して、掛け算を行う

end

def slice_num(num)
# 10の位の計算

# 1の位の計算

end

puts “二桁の整数を入力してください”
input = gets.to_i

X, Y = slice_num(input)
# additionメソッドにX,Yを引数として渡し、処理結果を変数add_resultに代入する。

#

元記事を表示

過去一週間でいいねの合計カウントが多い順に投稿を表示する方法


【Ruby on rails】過去一週間でいいねの合計カウントが多い順に投稿を表示する方法

# 初めに
プログラミングスクールに通い始めて2ヶ月目です。
読書本シェアアプリを作っています^^
自身の忘備録として記事を更新していきます!

# アソシエーション
“`ruby:user.rb
has_many :books, dependent: :destroy
has_many :favorites, dependent: :destroy
“`

“`ruby:book.rb
belongs_to :user
has_many :favorites, dependent: :destroy
has_many :favorited_users, through: :favorites, source: :user
“`

“`ruby:favorite.rb
belongs_to :user
belongs_to :book
“`
userモデル,bookモデル,favoriteモデルのアソシエーションが完成しました。
has_many :favorite

元記事を表示

div ブロック要素

はブロック要素。
 width:400px;を設定しないと、画面いっぱい(横幅)に広がっていく。
margin: 0 auto;をすることで、真ん中の位置にすることができる
.susumu {
width: 400px;
margin: 0 auto;
}

元記事を表示

【Rails】gemを使わずに 楽天Apiを動かしてみよう:前篇【ハンズオン】

この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿10日目のエントリーです。

9日目は @takakou さんで
[初学者のためのUnity+clusterによるメタバース空間の構築。](https://qiita.com/takakou/items/065b56d1390d7e676e4f)
です。メタバース・・私もちょっとやってみた事があるので、楽しく読ませていただきました。

## はじめに

最近DMMでメンターをやらせていただいております。 @tomoaki-kimura です。
今回は、 `irb` を使って `Api` を理解するという内容をやってみたいと思います。

## 環境と前提

– ruby 3.1.x

## 1.楽天Api

### 準備

では、早速準備をしましょう。

まず、 [RakutenDevelopers](https://webservice.rakuten.co.jp/docu

元記事を表示

eth.rb を使ってスマートコントラクトの関数を呼び出す

web 3.0 業界は js が多い印象ですが、ruby からも使いたいですね。ここ数年間は、ruby の gem も増えているように見えます。
イーサリアム公式サイトのページに載せている eth.rb を使ってみました。

https://github.com/q9f/eth.rb

## mint するコード

“`rb
@key = Eth::Key.new(priv: ‘プライベートキー’)
@client = Eth::Client.create(‘イーサリアムの RPC ノードの URL’)
@contact = Eth::Contract.from_abi(abi: ‘abi の情報’, address: ‘スマートコントラクトのアドレス’, name: ‘RBT’)
@client.transact_and_wait(@client, ‘mint’, ‘mint 先のアドレス’, sender_key: @key)
“`

以前 [ethereum.rb](https://github.com/EthWorks/ethereum.rb) を使ったことがありましたが、

元記事を表示

YAML 上の位置を取得する

# YAML 上の位置を取得する

## はじめに

YAML は設定ファイルのフォーマットとして、Ruby 界隈ではよく使われるフォーマットです。Ruby に同梱されている gem を使えば、簡単に、パースを行い、Ruby のオブジェクトに変換することができます。

YAML 上の文法エラーがあった場合、位置情報と共に例外があがるので、どこでエラーがあったかが簡単にわかります。しかし、変換後の結果に不備があった場合、Ruby のオブジェクトへの変換の際に位置情報を落としているので、どこに問題があるのか分かりません。なので、入力の YAML とにらめっこする羽目になります。

Ruby 2.6 に同梱されている Psych から、YAML の AST を扱うクラスに位置情報が含まれるようになりました。これを用いて、変換後のオブジェクトに位置情報を追加してみようと思います。

## 方針

YAML の基本構成要素である、Array/Hash とその値オブジェクトに対して、以下の方針で位置情報を付加することにします。

* Array/Hash には開始点の位置情報を付加する
* Arr

元記事を表示

[Unity] 汎用的なCI環境構築ライブラリを作ったお話

# 概要

[サムザップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/sumzap) 10日目の記事です。
本稿は業務改善系の記事です。

プロジェクトごとに毎回ビルド環境の構築コストがかかる課題を解決するため、fastlaneを利用したCI環境構築ライブラリを作成しました。
今回はそのライブラリのご紹介になります。

## fastlaneとは

https://fastlane.tools/

Ruby製のライブラリで開発支援ツールです。
アプリビルド〜アプリ申請の自動化を行うことができます。
証明書・プロビジョニングプロファイルの管理など、申請において属人化しやすい作業をアクションという名のコマンドを実行することで再現性のとれたフローを作れます。

# 作ったもの

– Unity向けC#ビルドスクリプト
– ビルドマシン環境構築スクリプト
– プロジェクト環境構築スクリプト

順を追って説明します。

## Unity向けC#ビルドスクリプト

大きく分けて以下のような構成で実装しました。
一部のクラ

元記事を表示

Ruby Gold 3.1 落ちました → 「無料でもう一度受験できるってマジ?」(Ruby Gold 3.1 合格体験記)

# はじめに

 2022年10月〜 Ruby技術者認定試験の対象バージョンを3系に対応したものに変更されました。
「Ruby Silverを取得したから次はRUby Goldを取得しよう!」 と勉強を続けていたらいつのまにか新しいバージョン対応になる話を聞きました…

 新試験になることに不安を持ちつつもどうせなら新しいバージョン対応の資格持っているぜと胸を張りたいので新試験を受けることにしました

そんな合格体験記を綴ります。
手早く、新試験はどのような勉強をすれば良いか知りたいと言う方は `6. まとめ` まで飛ばしてご覧になることをオススメします

# 1. 受験前

「新試験になるならそれ対応の参考書欲しいなー」

 すでに Ruby Silverを取得していた私はその時に購入していた参考書を持っていてRuby Goldにも対応していたのですが、旧試験のものなのでやはり新試験に対応したものを揃えておき

元記事を表示

Ruby Singleton Class

## メソッドの定義場所
メソッドがどこに定義されているのかは“`owner“`メソッドを使うことによって確認できます。
“`ruby
class User < ApplicationRecord def self.from_class return "from class" end def from_instance return "from instance" end end ``` 上記のようなクラスを想定します。 ```ruby pry(main)> User.instance_method(:from_instance).owner
# => User(…)
pry(main)> User.method(:from_class).owner
# => #
pry(main)> User.singleton_class
# => #

元記事を表示

Stimulus 序文: Stimulusの起源

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://stimulus.hotwired.dev/handbook/origin

[Basecamp](https://basecamp.com/)では多くのJavaScriptを作成していますが、現代的な意味での”JavaScriptアプリケーション”を作成するために使用することはありません。私たちのすべてのアプリケーションはサーバー側でレンダリングされたHTMLをコアに持ちJavaScriptを散りばめることでそれらを輝かせます。

これが[雄大なモノリスの道](https://m.signalvnoise.com/the-majestic-monolith-29166d022228)です。BasecampはRuby on Railsを使用して作成された単一のコントローラー、ビュー、およびモデルのセットを使用して、ネイティブモバイルアプリを含む6つのプラットフォームで実行されます。単一の場所で更新できる単一の共有インターフ

元記事を表示

cssのインデント修正(基本)

文字を真ん中に位置したいが出来なかった。

.susumu {
text-align: center;
}

原因は、終わりに;がなかったから。
.susumu {
text-align: center;
}

元記事を表示

[Rails]本にカテゴリタグを追加し検索する

## 行いたいこと
– 本の投稿時にカテゴリタグを追加する
– カテゴリタグで検索が出来る
## 環境
– Ruby3.1.2
– Rails6.1.7
– device、bootstrap導入済み
– Bookモデル作成済み

# 1.カラムの追加
Bookモデルにタグを保存するために新しくカラム`tag`を作成
“`
# rails g migration add追加したいカラム名To追加したいモデル名 追加したいカラム名:データ型
rails g migration addTagToBook tag:string
“`
“`作成日_add_tag_to_book.rb
class AddTagToBook < ActiveRecord::Migration[6.1] def change add_column :books, :tag, :string end end ``` ``` $ rails db:migrate ``` # 2.コントローラー作成、バリデーション設定 #### バリデーション、ストロングパラメータの設定 ```models

元記事を表示

圧倒的な異臭を放つDiscord Botを作ってみた ~Qusineを添えて~

この記事は[クソアプリ Advent Calender 9日目(シリーズ3)](https://qiita.com/advent-calendar/2022/kuso-app)の記事です。

圧倒的な異臭を放つDiscord Botを作ってみました!!!!!!!!!

![](https://i.imgur.com/zq01UAW.gif)

リポジトリ:[sevenc-nanashi/pooper](https://github.com/sevenc-nanashi/pooper)

https://github.com/sevenc-nanashi/pooper/blob/main/formatted.rb

## Qusineって?

> Qusine(クサイン)とは、[Quine](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AF%E3%82%A4%E3%83%B3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0))のうち、特に異臭がするものを指す。

元記事を表示

ActiveRecord::RecordNotFound in UsersController#show エラーの解決方法!検証ツールを使えば…

# エラー内容
* `ActiveRecord::RecordNotFound in UsersController#show`というエラーが表示された。

![ActiveRecord RecordNotFound in UsersController show.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/23e82030-efca-3185-81f5-20af674e4738.png)

# 仮説
* idがshowアクションへ送られていないのでは?と思い、usersコントローラーの`@user`を`@user = User.find_by(id: params[:user_id])`にしてみたが、別のnilエラーになってしまう。問題なかった
* ルーティング間違いかと思い、以下も確認したが、問題なさそう
“`ruby
root to: ‘prototypes#index’
resources :prototypes, only: [:new, :create, :sho

元記事を表示

【Rails】UNKNOWN ACTION ERROR エラーの解決方法。超初歩的なミスだった話

# エラー内容
* `UNKNOWN ACTION ERROR` と表示された。
ええー初めてみるぞこれ。なんだ!?

# 原因
* 超初歩的なミスをしていました。
* comments_controller.rbの一番上が以下のようになっていました。そう、2行目のendが間違いです!汗

“`comments_controller.rb
class CommentsController < ApplicationController end def create # 以下省略 ``` # 解決方法 * 正しくは以下の通り。endは一番下。アクションはその中に入れるように注意しましょう。 * controllerの一番上の誤記は盲点で意外と時間がかかってしまったものです。 ```comments_controller.rb class CommentsController < ApplicationController def create @comment = Comment.create(comment_params) if @comment.save red

元記事を表示

ActionController::ParameterMissing (param is missing or the value is empty: calendars): のエラー解決方法

# エラー内容
* Railsでformを設置したが、フォームボタンを押しても反映(投稿)されない現象が発生。
* 真っ赤の画面でもエラー画面が出てくれれば、なにが問題か調べることができるのだが、なにも反応ないというのは、駆け出しエンジニアにとっては鬼畜のエラー対応というもの!あのエラー画面のありがたさを知った機会でした。

# 対応した手順
* createアクションに`binding.pry`を記入して`plan_params`をチェックしてみると下記のように返ってきた。「パラメータがないか、値が空です」と言われている。

“`
ActionController::ParameterMissing (param is missing or the value is empty: calendars):
“`

* Railsでは、フォームから入力された値はパラメータとして作成したビューのフォームを通し、ブラウザからサーバーに送られる。つまり、パラメーターとは、viewとcontrollerにデータを送るための箱のこと。そのパラメータがない(or値が空)なのが原因らしい。

*

元記事を表示

チェリー本読破までの自分メモ【5章】

### ハッシュ・シンボル
* ハッシュ:キーと値の組み合わせでデータを管理する。dict型っぽい。Hashクラス
* `hash = {‘a’ => 1}`で定義
* ほぼdict。キーは一意
* `hash[‘a’]`で呼び出し。値の上書き可。存在しないキーであればキーと値が追加される
* `each`で全組み合わせを呼び出し可能(ブロックパラメータはキーと値の配列になる)
* `size`メソッドでハッシュの組み合わせの数を調べることができる
* シンボル
* `:symbol_name`:文字列とよく似た見た目だが、別物。Symbolクラスのオブジェクト
* 処理上では文字列でなく整数。また、同じシンボルは一つしか存在しないという特性から、比較が早い。
* 文字列は、同じ内容でもその個数分だけメモリが裂かれる。
* イミュータブル(破壊的変更が不可)
* ハッシュは早い。シンボルも早い、かつ変更不可=>キー向き。なのでデータ管理に適している。
* この場合、`{key: :value}`と

元記事を表示

RailsアプリにDockerを導入した③【redisコンテナ&sidekiqコンテナ】

## やったこと
Railsアプリに、RedisコンテナとSidekiqコンテナを載せた。

## なんのために?
– 非同期処理:時間のかかるタスクやある時間になったら実行したいタスクを「後で処理するリスト」に入れておき、他のタスクを実行しながら「後で処理するリスト」のタスクも並列で行っていく
– 「後で処理するリスト」には __Redis__ のキューがよく使われる。これから処理していく予定のジョブのデータをRedisに永続化することで、Railsプロセスが落ちたとしてもエンキューされたジョブのデータは失われない
– Railsサーバと __Redis__ と __Sidekiq__ の関係:Railsサーバの処理の中で「後で処理するリスト」に任せたいジョブがあれば、 __Redis__ で永続化しているキューにジョブを追加(エンキュー)し、 __Sidekiq__ がジョブを取り出して(デキュー)実行していく
– ↑これらのキュー操作をさまざまな方法で実行するためにインターフェースなどを定めているフレームワークがActive Job

## 手順
1. ローカルで動かす
1.

元記事を表示

Rubyで数字を1行になるまで掛け算する

# 前提
引数のintegerの値を一桁になるまで掛け続けて、何回掛け算を行ったかを返り値にする。

“`
ex
39 –> 3 (because 3*9 = 27, 2*7 = 14, 1*4 = 4 and 4 has only one digit)
“`

# 判定メソッド
“`ruby
def persistence(number)
count = 0

while number > 9 do
num = 1
number.to_s.split(”).each do |i|
num = num * i.to_i
end

number = num
count += 1
end

count
end
“`

“`ruby
def persistence(n)
k = 0
while n > 9 do
n = n.to_s.split(//).map{|x| x.to_i}.inject(:*)
k+=1
end
k
end
“`

“`ruby
def p

元記事を表示

チェリー本の著者、伊藤淳一氏の示す効果的な読み方【自分用メモ】

#### 以下の動画の内容を自分なりにかいつまんだメモ
当ページ下部に動画の埋め込みあり
[著者自身が語る「プロを目指す人のためのRuby入門」の効果的な読み方 #チェリー本 – YouTube](https://www.youtube.com/watch?v=qqqbHXarPO8)

irbを使って学習する。

1~6章までが簡単
~10章までが難しい
~13は基本付録のような内容

基本例題までしっかりやって、あとは読み飛ばすくらいでいい
例外処理については、現場に出てから読み直すとかの感覚でいい

#### 目次
1章:ざっと目を通す程度
2章:基礎的な内容
3章:簡単な内容だがやらないと以降の章がわからなくなる可能性がある
1~6章は必ず読む(ここまでで手続き型言語の学習が完了となる)
7章:7.8まで読む(他は読み飛ばす)
8章:8.4まで読む(読み飛ばす。以降サブセクションも読んでいいが、実務的な内容になるので必要になったらでいい)
9章:9.5まで読む(基本ざっと読む)
10章:10.4までざっと読む(railsはprocが出てくる。スコープがrailsでよく使われてい

元記事を表示

OTHERカテゴリの最新記事