- 1. GitHubにほったらかし収入源botコードをあげたが反応がないのでQiitaにさらす(アダルト注意)
- 2. shopify-api-ruby の ShopifyAPI::ResourceName.all でデータを全件取得する方法
- 3. Raspberry Pi Pico 用の mruby を Build するためのコンテナ作成用 Dockerfile を書いてみた
- 4. Ruby on Railsでrails sが起動しない rails aborted! TZInfo::DataSourceNotFound
- 5. slice!メソッドの備忘録
- 6. [Rails] コメントの削除方法
- 7. RubyでCSV操作する
- 8. フレームワークやプログラミング言語を年収や求人数からスコア化してみる
- 9. each_with_indexを使ったプログラム
- 10. ただMacのターミナルでRubyとRailsを最新バージョンにしたかっただけなのに。。
- 11. 【Ruby】Rubyのわかりにくい文法
- 12. Rubyで外部コマンドを実行する方法メモ
- 13. クラスメソッドとインスタンスメソッドとinitializeメソッドの備忘録
- 14. git push heroku masterで失敗後heroku loginでも失敗した場合
- 15. Rack 3.0 で Rack::Server が消えた
- 16. 【Ruby on Rails】 Rubocopについて
- 17. 【Ruby on Rails】Rspec, Factorybot等の導入
- 18. Ruby on Rails をTermuxに導入
- 19. 【DDBJ】BioProject から SRA を一気にダウンロードするためにURLのリストを生成する
- 20. ブランクありのエンジニアが現場復帰して躓いたこと part.1
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
endmissing_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
# 結果
# […]
# […]
# …
# => nilCSV.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
endp 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 Vegetabledef self.fresh
puts “新鮮な野菜はいかがですか?”
enddef initialize(name, price)
@name = name
@price = price
enddef introduce
puts “#{@name}は#{@price}円です”
end
endcarrot = 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-rspecAllCops:
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_