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

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

GitHubにほったらかし収入源botコードをあげたが反応がないのでQiitaにさらす(アダルト注意)

# はじめに
![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2850355/ea25f804-5cf8-f15d-82d8-6bcb6bfae8bb.png)
こんな感じでDUGA(アダルト動画サイト、わりとマニアックな作品が多い)で販売されているアダルト動画情報をツイッターに自動で定期的に投稿するbotを作成しました。リンクはアフィリエイトになっているので、夢の**不労所得獲得装置**が完成します。

私自身、いつくかこのようなbotを作成して月額約5万円の不労所得を得ていますが、最近はアイデア的にも技術的にも頭打ちで、「こうしたらもっと儲かる」とか「もっとこういう情報が欲しい」とか「このコードの書き方は危ない」といったアドバイスをいただきたく、GitHubにRubyコードとbotの設定のしかたなどをアップロードしました。もっと勉強して月額50万円をめざしたいと思います。

https://github.com/dugabot0/duga_bot
レポジトリはこちら。

GitHub

元記事を表示

shopify-api-ruby の ShopifyAPI::ResourceName.all でデータを全件取得する方法

## 背景

– Shopify の 公式 Ruby 用 API クライアント「[shopify-api-ruby](https://github.com/Shopify/shopify-api-ruby)」を使って Shopify 各リソースのデータを全件取得したい。
– `ShopifyAPI::ResourceName::all` を実行しても一部データしか取得できなかった。

“`ruby
# 例) 商品データを全件取得したい
products = ShopifyAPI::Product.all
products.size

=> 50
“`

## 原因

どうやら、`all` メソッドで取得できるのは最初の50件までみたいです。(おそらく裏側で limit 句みたいなものが働いている?)

## 対策

`fetch_next_page` メソッドを使う事で次の50件が取得できました。

“`ruby
products.fetch_next_page
“`

また、次のデータが存在するかどうかは `next_page?` メソッドで確認できます。

“`ruby

元記事を表示

Raspberry Pi Pico 用の mruby を Build するためのコンテナ作成用 Dockerfile を書いてみた

# はじめに

@GORO_Neko です。ご存知の方ご無沙汰してます。初めての方お初にお目にかかります。

最初にいつも通りのお断りをば。

自分、仕事では一切マイコンボードを利用した業務に携わったことがございません。

以下は、自分が所属する会社の意向を反映したものでもスタンスを示すものでもなく、単なる一個人の趣味の活動から産まれた記述です。

… はい。

# Raspberry Pi Pico 用の mruby を使えるようになっていた(凄い! 嬉しい!)

いつものごとくネットをサーフィンしていて、[Raspberry Pi Pico](https://www.raspberrypi.com/products/raspberry-pi-pico/) 用の mruby を使えるようにしてくださった方がおられることに、先日気が付きました。

Raspberry Pi Pico って [MicroPython](https://micropython.org/) とか使って弄くっても良いんですが、やっぱり Ruby 言語使って操作したいんですよ、自分は。

早速、使えるようにしてく

元記事を表示

Ruby on Railsでrails sが起動しない rails aborted! TZInfo::DataSourceNotFound

# 内容
[Progateのサイト](https://prog-8.com/docs/rails-env-win)の通りに環境構築をしていた時に出たエラー
rails sが通らない/サーバーが起動しない

# 構成
Windows 11 Pro 21H2
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
Rails 7.0.4

# エラー内容
rails aborted!
TZInfo::DataSourceNotFound: tzinfo-data is not present. Please add gem ‘tzinfo-data’ to your Gemfile and run bundle install

# 改善方法 2工程
1, プロジェクト内のGemfileの40行目を変更する
gem “tzinfo-data”以降をコメントアウト
“`diff:
– gem “tzinfo-data”, platforms: %i[ mingw mswin x64_mingw jruby ]
+ ge

元記事を表示

slice!メソッドの備忘録

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

### slice!メソッドとは
配列や文字列から指定した要素を削除し、削除した後の要素を返すメソッドでもとの配列や文字列を変化させる破壊的メソッドの一種
“`
string = “abcdefg”
string.slice!(2)

puts string
#=> “abdefg” #2番目の要素のcが取り除かれている
“`

このslice!メソッドを用いて任意の文字を削除したのち、残った文字を出力するプログラムを実装できる。

### 記述内容
“`
def missing_char(str, n)
str.slice!(n – 1)
puts str
end

missing_char(‘hogehoge’, 1)
missing_char(‘hogehoge’, 3)

#=> “ogehoge”
#=> “hoehoge”
“`
第一引数に対象の文字列、第二引数に何番目の文字を消すのか指定し、missing_charメソッドを呼び出す。
strには文字列”hogehoge”,nには指定した数字が入る
strにsl

元記事を表示

[Rails] コメントの削除方法

# はじめに
この記事は、コメント機能が実装できているのが前提で進めています。それでは実装していきましょう。

実装内容の一覧
1. ルーティングの設定
2. コントローラーの設定
3. ビューの設定

# 1. ルーティングの設定
削除機能を実装するので、以下のように、routes.rb に destroy アクションを加えましょう。

“`ruby:routes.rb

resources :gurumes do
resources :likes, only: [:create, :destroy]
#追記箇所
resources :comments, only: [:create, :destroy]
#ここまで
end

“`

# 2. コントローラーの設定
comments_controller.rb にも、以下のように destroy アクションを加えましょう。

“`ruby:comments_controller.rb

#追記箇所
def destroy
comment

元記事を表示

RubyでCSV操作する

# 前提
– Ruby 3.1.2
– [ドキュメント](https://docs.ruby-lang.org/ja/3.1/class/CSV.html)
– 以下コードは`require ‘csv’`している想定

# 読み込み
仕様としては、[RFC4180](https://datatracker.ietf.org/doc/pdf/rfc4180.pdf) に準拠している
※ 例えば、フィールドをクォートで囲むことで、カンマを含んだ文字列を扱える等が定義されている

また、バリデーションは必要に応じて別途行うこと
例. `raise MalformedCSVError if csv.first != CSV_HEADERS`

## ファイルから
“`ruby
# 一行ずつ
CSV.open(file_path, ‘r’).each do |row|
p row
end
# 結果
# […]
# […]
# …
# => nil

CSV.foreach(file_path) do |row|
p row
end
# 結果
# […]
# […]

元記事を表示

フレームワークやプログラミング言語を年収や求人数からスコア化してみる

## サイトはこちら

https://flamevalue.short-tips.info/

## 注意事項:鵜呑みにしない

本サイトは現在でも改修、改良が進んでいる状態です。従って評価基準はこれからも絶えず変更されます。

また、根拠のもととなるCareerJetは完全な求人サイトとは言い難いです。

何が言いたいかというと評価基準も元となるデータもバラバラですが、

どうか寛容な目で見守ってやってください。

# フレームワークランキング

## 第一位:Ruby on Rails

https://flamevalue.short-tips.info/Ruby%20on%20Rails

### 状態

– 平均下限年収 : 616万円

– 平均上限年収 : 777万円

– 総求人数 : 7023件

– リモート率 : 65%

– フォロワー(Qiita) : 12.62人

年収からリモート率までトップ。
採用数のみ、フレームワーク故(目的が絞られているが故)にプログラミング言語よりは低いスコアになっているが、フレームワーク界隈ではトップ。

というかr

元記事を表示

each_with_indexを使ったプログラム

# each_with_indexメソッド
eachメソッドは配列の要素を一つずつ取り出せるものの、取り出す要素が何番目のものかを取得することはできない。
“`each_with_index“`メソッドなら要素の繰り返し処理と同時にその要素が何番目に処理されたものなのかも同時に取得できる。

# 使い方の例
“`
配列データ.each_with_index do |x, i|
処理内容
end
“`
each_with_indexメソッドはブロック変数がeachメソッドより一つ多い。
変数xは配列の各要素、変数iは配列の順序(インデックス)となる。
インデックスは0から始まる整数で要素が増える毎に1ずつ増える。

# サンプル
下記のような配列データから任意の数字を探して何番目に含まれているかと言う結果を返すsearchメソッドをeach_with_indexメソッドを使って作成する。
“`
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
“`

“`sample.rb
d

元記事を表示

ただ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_

元記事を表示

OTHERカテゴリの最新記事