- 0.1. Gemのインストール方法いろいろ
- 0.2. 【Ruby】initializeメソッド、引数の順番依存関係を取り除く
- 0.3. そのrubocopの警告スルーしていませんか?
- 0.4. 「Rubyのしくみ」を読んだ
- 0.5. Railsにおける途中経過の確認
- 0.6. Stimulus 4: レジリエンスのための設計
- 0.7. Ruby から Amazon OpenSearch Serverless を利用する①
- 0.8. 「たのしいRuby」繰り返し処理 times, for, while, until, each, break, next
- 0.9. 【RUBY】クラスとインスタンスの概念
- 0.10. 競プロで学ぶRuby
- 0.11. Rails7の環境構築のメモ
- 0.12. 【Rails】で、結局 params[:id]って何なん
- 0.13. 「Ruby on Rails」Sidekiqジェムを紹介する
- 0.14. rails s(rails server)でエラーENOENTが出た件
- 1. 問題点
Gemのインストール方法いろいろ
通常とは違うGemの読み込み方法を3つほどまとめました。
1.ブランチ指定してGemを読み込む方法
2.プライベートリポジトリにしているGemの読み込み方法
3.ローカルのGemを読み込む方法の3つです。
## 1.ブランチ指定してGemを読み込む方法
“`ruby
gem ‘gem名’, git: ‘gitのパス’, branch: ‘ブランチ名’
“`## 2.プライベートリポジトリにしているGemの読み込み方法
### ①GitHubでpersonal access tokenを取得する。
### ②それを環境変数に設定する
.envに記述。もしくはLinuxの環境変数に直接設定。“`ruby
GIT_ACCESS_TOKEN=”発行されたトークン”
“`
### ③Gemfileのgemのインストール先をプライベートgemにする。“`ruby
gem ‘gem名’, git: “gemのパス”
“`### ④以下のコマンドでbundle installを実行する。
“`bash
BUNDLE_GITHUB__COM=$GIT_ACCE
【Ruby】initializeメソッド、引数の順番依存関係を取り除く
## initializeメソッドは引数の順番に依存している
次の例では、Fooのinitializeメソッドは3つの引数をとります。(hoge,piyo,bar)
デフォルト値はなく、それぞれの引数が必須です。“`ruby
Class Foo
def initialize(hoge, piyo, bar)
@hoge = hoge
@piyo = piyo
@bar = bar
end
end
“`ここで重要なのは引数を正しい順番で渡さないといけないことです。
newメソッドは引数の順番に依存します。“`ruby
Foo.new(1,2,3)
=> hoge=1
=> piyo=2
=> bar=3Foo.new(3,1,2)
=> hoge=3
=> piyo=1
=> bar=2Foo.new(2,3,1)
=> hoge=2
=> piyo=3
=> bar=1
“`## Rubyのinitializeメソッドの引数の順番の依存を取り除く方法
### 1. ハッシュを使う
“`ruby
Class Fo
そのrubocopの警告スルーしていませんか?
rubocop の警告が煩わしいと思うことがありませんか?
面倒だから警告を diable にして、警告を消してOKにしてませんか?
逆に深く考えずに警告を修正して、警告が消えたから、それでOKなんてことしてませんか?ちょっと待ってください。警告は自分のスキルアップにつながるチャンスかも知れません。警告にどんな意味があるか、どう修正すべきか調べることで、自分の知識を深めることにつながるかも知れません。今日は、そんな自分の経験をいくつかご紹介したいと思います。
なお、ここでは、 rubocop と rubocop-rspec gem を使っています。
以下のコードと spec を例にして説明します。
“`ruby:web_download.rb
# frozen-string-literal: truerequire ‘open-uri’
# Web ページのクラス
class Web
def initialize(url)
@url = url
enddef read
URI.open(@url, &:read)
end
end
「Rubyのしくみ」を読んだ
[WEBCAMP ENGINEER COMMUNITY のカレンダー](https://qiita.com/advent-calendar/2022/webccamp-engineer-community)の14日目はQiitaの @kyntk が担当します。
「Rubyのしくみ」を読んだので、その感想をまとめました。
日本語版序文として、まつもとゆきひろさんの以下のようなコメントがあります。
> Rubyを便利につかっていても、その中がどうなっていて、どのように実行されているのか、ある
Railsにおける途中経過の確認
## pry
Railsではpryを使うことによって、プログラムを一時的に止めることができます。
一時的に止めることによって何が嬉しいのかというと、途中経過をみることができます。大抵の場合、バックエンド側でデータを取得してクライアント側に渡すと思いますが、このデータがどこまで持ってこれているのかだったり、そのオブジェクトが思うような状態になっているのかの確認をクライアント側に来て初めてするのでは効率が悪いです。
プログラムを途中で止めることによって、その時点でのデータやオブジェクトの状態を確認することができます。“`pry-rails“`をGemfileに追加し、“`bundle install“`します。
止めたい場所に、“`binding.pry“`を追加することによって一時的に止めることができます。“`user.rb
class User < ApplicationRecord def publish_post binding.pry user.posts.create(title:
Stimulus 4: レジリエンスのための設計
:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::https://stimulus.hotwired.dev/handbook/designing-for-resilience
クリップボードAPIは[現在のブラウザーで十分にサポート](https://caniuse.com/#feat=clipboard)されていますが、古いブラウザーでアプリケーションを使用している少数の人々がまだいると予想される場合があります。
また、アプリケーションへのアクセスに時々問題が発生することも想定しておく必要があります。たとえば、断続的なネットワーク接続またはCDNの可用性により、JavaScriptの一部またはすべてが読み込まれない可能性があります。
古いブラウザーのサポートは無駄だと片付けたり、ネットワークの問題を更新後に解決する一時的な不具合として片付けたりするのは魅力的です。しかし、多くの場合でこの種の問題に対して適切に回復力のある機能を構築することは自明のことです。
プログレッシブエン
Ruby から Amazon OpenSearch Serverless を利用する①
AWS OpenSearch Serverless が、先月 Preview 版として利用可能になったので試してみた記事です。
アナウンス:
https://aws.amazon.com/jp/about-aws/whats-new/2022/11/announcing-amazon-opensearch-serverless-preview/
対象とする読者(と僕)は、文書検索とかなんもしらん程度のRailsエンジニアです。
# OpenSearch とは
Elastic 社が、[フリーライダーP(I)aaSにキレ](https://www.itmedia.co.jp/news/articles/2202/17/news122.html)てライセンスを変更したため、
Elastic製品(の新しいバージョン)をサードパーティが製品そのものをサービスとして提供できなくなりました。
このライセンス変更に反対した開発者を中心に、Elasticsearch と Kibana をフォークして、より自由に利用できるようにしたソフトウェア群が OpenSearch です。Amazon
「たのしいRuby」繰り返し処理 times, for, while, until, each, break, next
つぎ、繰り返し処理。まず、1から10までの和を計算してみた、なお答えは55。
そのほか、リストから文字列を順番に取り出す方法のサンプルも。
Rubyでは呆れるぐらい色々な方法で繰り返し処理できる。ここに書いてない方法もある。Pythonではforだけど、Rubyではとりあえずtimesだけあれば用は足りる気がする。あと、forよりtimesの方を推薦しているみたいだ。
***Green_helmet@bethlehem4099·7月15日***
## times
~~~ruby:times.rb
sum = 0
10.times do |i|
sum += ( i + 1 )
end
puts “\n”,sum
~~~
~~~command_line:command_line
~ % ruby times.rb
55
~~~
timesは駐車場ではなく回の意味だろう。つまり駐車場が10個ではなく、10回timesからendまでの間を繰り返す。+=は右辺の値を左辺に足し算する。変数iには0から9が自動的に入る。1足しているので1から10になる。
変数iは変数nに変えても結果は同じ
【RUBY】クラスとインスタンスの概念
# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。# クラスとインスタンスの概念
上記のコードでは新しい「値」を作成するために、クラスとインスタンスの概念を利用しています。
## クラス
クラスは、値の元となるものです。値の共通のルールを定義します。
ここで決めるルールは、共通の属性と処理(メソッド)です。
クラスを使えば、文字列が「こんにちは」や「どうも」という別々のデータを持つことができることと同じように、共通のルールを守った上で個別のデータを作ることもできます。
共通の情報をまとめ、個別の情報は各データごとに分けることで、開発・管理・保守がし易くなるという利点があります。
クラスは設計図に例えることができます。例えば、テレビの設計図があるとし、その設計図から実体のあるテレビが作り出されます。
クラスとは簡単に言ってしまえばひな形と言え、テレ
競プロで学ぶRuby
# これは
競技プログラミングの入門レベルを通してRubyの基本を学んで行こうぜってものです。出発点が競プロなので記載内容に若干偏りがあります。ソーリー :pray::warning: Rubyを既にある程度学んでる人が「Rubyで競プロしようぜ」ってものではないです。あと、あくまでRubyを学ぶのが趣旨で、Ruby on Railsは対象外です。
https://qiita.com/advent-calendar/2022/cb-cloud
:point_up_2: みんな忙しいから書いてないんだな、そうだよね:exclamation::question:
### ってことで、まずは基本から、、、
# 標準入力
“`rb
# 単一整数
N = gets.to_i# スペース区切りの複数の整数
A = gets.split.map(&:to_i)# 縦に並ぶ複数の整数
A = N.times.map { gets.to_i }# 文字列。chompで改行文字を削除
S = gets.chomp
“`
## [gets](https://docs.rub
Rails7の環境構築のメモ
# はじめに
Rails6入門書籍参考にしながらRails7入れようとしたら詰んだのでメモを残します。環境構築あるあるですが
30分くらいかなと思ったら謎に詰んで1.5時間ももってかれました。# 環境
Windows11 Home 22H2
※私用PCでプログラミングしたことなかったので、初期で入ってるものなし。# 1. インストール
#### Ruby 3.1.3 (2022/12最新)
サイトから最新を入手してインストール
https://rubyinstaller.org/downloads/#### MSYS2
rubyインストール後に自動で起動
書籍にはなかったので雰囲気でMSYS2 →1を選択 (+MINGWの3を選ばなかった)#### Rails 7.0.4 (2022/12最新)
“`> gem install rails“`
最新をインストールここからエラー祭り。
↓
↓
↓#### エラー①
> rails No such file or directory – git config init.defaultbranchRai
【Rails】で、結局 params[:id]って何なん
この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿13日目のエントリーです。12日目も 私で
[【Rails】gemを使わずに 楽天Apiを動かしてみよう:後編【ハンズオン】](https://qiita.com/tomoaki-kimura/items/eb8faf554f8c398954ac)## 環境と前提
– ruby 3.1.1
– Rails 6.1.7## Railsでアプリを作る
### 準備
準備は、 `rails new` をやる準備が整っている前提で進めていきます。
“`bash:bash
$ rails _6.1.7_ new routes_test
“`でアプリを作成します。
もし、この時点で、
“`
can’t find gem railties (= 6.1.7) with executable rails (Gem::GemNotFoundException
「Ruby on Rails」Sidekiqジェムを紹介する
概要:
・Sidekiq は、Rails アプリケーションでバックグラウンド ジョブを実行するための gem です。
・Sidekiq は、マルチスレッドと Redis を使用して複数のジョブを同時に処理します。
・Redis は、ジョブをキューに格納するためのデータベース ストアとして理解されます。コンフィギュレーション:
Sidekiq:
Gemfile に次の行を追加します: gem “sidekiq”次に、bundle install を実行します
Redis:
次のリンクに従って Redis をインストールします: https://redis.io/topics/quickstartファイル config/initializers/sidekiq.rb で Redis に接続するように Sidekiq を構成します。
Sidekiq.configure_server do |config|
config.redis = {
url: “redis://127.0.0.1:6379/12”
}
end
rails s(rails server)でエラーENOENTが出た件
前提です
railsを導入して、rails sやろうと思った矢先に出たエラーです
初歩的すぎるのか、ネットで調べても出なかったので、載せようと思います。
初心者でつまずく人もいるんじゃないでしょうか。問題点
アプリケーション内でrails sを起動してもエラーが出てしまう。
以下、環境
OS:Windows11
Ruby:3.1.3p185 (2022-11-24 revision 1a6b16756e) [x64-mingw-ucrt]
Rails:7.0.4以下エラーコード
“`題名
C:\Users\user\sample_app>rails s
C:/Program Files/Ruby31-x64/lib/ruby/gems/3.1.0/gems/railties-7.0.4/lib/rails/app_loader.rb:53:in `exec’: No such file or directory –
“C:/Program Files/Ruby31-x64/bin/ruby.exe” (Errno::ENOENT)
ぐるなび、食べログ、Rettyから飲食店リストを取得APIの構築
## 概要
飲食店情報を取得するAPIを構築する## 実装
### はじめに
https://qiita.com/itaya/items/0cd39400e274b926d5be
https://qiita.com/itaya/items/d6918a17d9f546a4ea60
https://qiita.com/itaya/items/52dcc8a38c16c0a48d1a
これらの記事で作ったコードをAPIとして実装するので、こちら読んでない方はぜひ読んでください。### 情報取得用クラス作成
飲食店情報取得クラスを作成といっても、上記で記載していた記事のものをクラス化するだけです。
`gnavi_crawler.rb`
“`rb
require ‘uri’
require ‘nokogiri’
require ‘kconv’
require ‘net/http’
require ‘uri’class GnaviCrawler
def main(area, keyword)
area = URI.encode_www_form_component(a
Docker で Rails と OpenSearch を連携させる【環境構築】
# はじめに
docekr-composeを使ったRailsアプリケーションにて
OpenSearchを利用するための開発環境 構築手順をまとめます。## 方針
下記2点の理由から、gem `elasticsearch-rails` を使ってRailsとOpenSearchを連携させます。
– rubyとopensearchを使ったクライアントは2022/12/11時点では公式に存在しない
– OpenSearch1系はElasticSearchの7.10をサポートしている# 実行環境
“`config: バージョン情報
Docker: 20.10.14
docker-compose: 1.29.2
ruby: 2.7.6
rails: 6.0.5
OpenSearch: 1.3.6
“`## 前提
– docker-composeでrailsが構築できていること
– 検索として扱うModelが存在し、レコードを持っていること
– 今回は例として`Book`Modelを使用# 開発環境の構築
## OpenSearchをdocker-compo
ruby.wasmでrequire_relativeを使えるようにしたい
# 背景
[ruby.wasm](https://github.com/ruby/ruby.wasm)というRubyのランタイムをWebAsssemblyにコンパイルした実行環境があります。
これを使うとブラウザでRubyスクリプトを実行出来ます。
実際にいくつかのアプリケーションが作られ、次のページで公開されています。https://github.com/ruby/ruby.wasm/wiki/Showcase
具体的にブラウザでRubyスクリプトを動かすには、たとえば、次のようにscriptタグにインラインでRubyスクリプトを記述します。
“`html
“`または次のようにscriptタグの
【Rails】gemを使わずに 楽天Apiを動かしてみよう:後編【ハンズオン】
この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿12日目のエントリーです。11日目は @takumi3488 さんで
[【CSS】テキストの下線(アンダーライン)を太くしたくないですか?僕はしたいです。](https://qiita.com/takumi3488/items/074a995cb4a5313991eb)## 環境と前提
– ruby 3.1.1
– Rails 6.1.7https://qiita.com/tomoaki-kimura/items/635b7f136a9967b457b4
↑こちらからの続きとなります。
Apiの理解が・・・という方は是非前編で手を動かしてみて下さい。
## 1.Railsでアプリを作る
### 準備
準備は、 `rails new` をやる準備が整っている前提で進めていきます。
“`bash:bash
$ rails _6.1.7_ new ra
Cloud FunctionsのCloudEvent関数でRSpecする
この記事は、[Ateam LifeDesign Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ateam-life-design) カレンダー1の13日目の記事です。
# CloudEvent関数でRSpecがしたかった
Cloud FunctionsのCloudEvent関数のロジックに手を加える機会があったのですが、本番へデプロイするまで動作確認をする術がありませんでした。CloudEvent関数への改修は初めてでしたので、普段業務で使用しているRSpecでテストコードを書いて安心してリリースが行えるようDockerでのテスト環境の構築から行いました。
この記事ではCloudEvent関数でのRSpecを使ったテストコードの記述例が当時見られなかったので、備忘録を兼ねて書き残したいと思います。
# CloudEvent関数のRSpecの書き方
以下のようなCloudEvent関数を例とする。
内容としてはeventデータが存在したときにFirehoseへデータレコードを配信ストリームに書き込むと
Rails RuboCop
## はじめに
チーム開発ではコードの規約が大切になります。規約がなかった場合、「僕はインデント幅2が好きだから2にしとくね」「僕はインデント幅100が好きだから100にしとくね」みたいな感じになってコードの可読性が落ちたり、思わぬエラーを引き起こしたりします。
そのような規約を暗黙の了解ではなく、自動的に適用させられたら嬉しいです。
そんな時に役立つのが“`RuboCop“`です。## RuboCopとは
Rubyのリンターです。Javascriptだと“`ESLint“`が有名だと思います。
解析するだけでなく、フォーマッターの役割もしてくれます。#### セットアップ
Railsに導入するものとします。“`Gemfile“`に以下のgemを追加します(rspecを使わない方は4行目は必要ありません)。
“`
gem ‘rubocop’, require: false
gem “rubocop-performance”, require: false
gem “rubocop-rails”, require: false