- 0.1. railsで新規プロジェクトを作成する手順
- 0.2. Rubyでスマートに+09:00を出したかった
- 0.3. 【Rails】レコードを配列の順番に並び替える
- 0.4. Herokuへのデプロイがfatal: the remote end hung up unexpectedlyで失敗した件
- 0.5. 【備忘録・Ruby】to_○メソッドまとめ
- 0.6. 【rails】chartkick導入ガイド
- 0.7. 【Ruby】あるメソッド内で別のメソッドを呼び出す時に意識すること
- 0.8. インフラエンジニアがRubyでAPI作ってみた②
- 0.9. Rubyではメソッド名と同じ名前のローカル変数を宣言しないようにしよう
- 0.10. Ruby 変数のスコープ レキシカルスコープ
- 0.11. Rubyのテスト(Minitest)を初めて使ってみた
- 1. テストを書くことについて
- 2. テストの実行と解説
- 2.1. Anitage+
- 2.2. Ruby on Rails 6.1.5 を Ruby 2.7.6 から Ruby 3.0.4 にあげるときにやること
- 2.3. Ruby 配列の中にあるハッシュをeachで回す方法
- 2.4. インフラエンジニアがRubyでAPI作ってみた
- 2.5. 【初心者】Ruby on Railsでブログを作る
- 2.6. API 経由で起動する Shopify Flow のトリガーを自作してみた
- 2.7. Rails+docker環境構築でyarnが上手くインストールできない
- 2.8. Railsの {OO: :OO} これ何⁇ {OO: OO} とどう違う?
- 2.9. 【Rails】データベースを元に戻す方法
railsで新規プロジェクトを作成する手順
備忘録。
railsで新規プロジェクトを作成する。### ツール
– SourceTree### 環境
“`
ruby -v
#=> ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]rials -v
#=> Rails 6.0.2.1
“`### rails new
“`
rails _6.0.2.1_ new appname –database=postgresql –skip-bundle
“`– `\_6.0.2.1_`
railsのバージョンの指定– `appname`
アプリケーションの名前を記述する– `–database=postgresql`
データベースの指定– `–skip-bundle`
Gemfileを読み込まないようにする:::note
「なぜGemfileを読み込まないようにするのか?」
Gemfileには、railsのバージョンに関する記述がある。その記述は、railsの最新版をインストールするように指定している。
この環境だと、
Rubyでスマートに+09:00を出したかった
皆さんはアプリケーション開発中に、タイムゾーンを意識することはどれくらいあるでしょうか?
普段の開発だと、一度設定してしまえば中々意識しにくいものですが、たまたま今回こちらに関して触る機会があったので記事にすることにしました。
## 今回やりたかったこと
UTCからの時差を`+09:00`のような、`±xx:yy`(xxが時間、yyが分)の形式で取得することです。
というのも、Elasticsearchに時差を考慮した日程の絞り込み検索を行いたい、と考えていました。
Elasticsearchでcreated_atが2022年4月のドキュメントを探したい、という場合以下のような絞り込みを行います(下記はクエリの一部を抜粋)。“`json
{“filter”:{“range”:{“created_at”:{“gte”:”2022-04-01″,”lt”:”2022-05-01″}}}
“`しかし、これではタイムゾーンが何も配慮していないため、時間の絞り込みはUTC基準で行われ、日本時間だと9時間ずれてしまいます。
この場合、そもそもcreated_atを9時間ずらして入
【Rails】レコードを配列の順番に並び替える
# 初めに
## 環境
Rails 7.0.2
Ruby 3.1.1## やりたいこと
配列の順番にレコードを並び替える。
# 本文
通常 where に配列を渡して、レコードを取得すると id 順に並び替えられて取得されます。
ですが`in_order_of`を使用することで配列の順番に並び替えられます。“`ruby
arr = [11,2,4,6,8,1]users = User.where(id: arr)
# puts users.ids -> [1,2,4,6,8,11]users = User.where(id: arr).in_order_of(:id ,arr)
# puts users.ids -> [11,2,4,6,8,1]
“`ちなみに `Rails 7.0.0`になってから追加されたメソッドでデータベースが `Mysql` や `postgresql` でも関係なく動きます。
# 参考
[in_order_of – Rails ドキュメント](https://railsdoc.com/page/in_order_of)
Herokuへのデプロイがfatal: the remote end hung up unexpectedlyで失敗した件
いつも通りRailsアプリをHerokuにデプロイしようとすると、以下のようなエラーが出た。
“`
>> git push heroku master
Enumerating objects: 67, done.
Counting objects: 100% (67/67), done.
Delta compression using up to 16 threads
Compressing objects: 100% (50/50), done.
Writing objects: 100% (54/54), 23.86 MiB | 311.00 KiB/s, done.
Total 54 (delta 17), reused 22 (delta 4), pack-reused 0
error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504
send-pack: unexpected disconnect while reading sideband packet
fatal: the remo
【備忘録・Ruby】to_○メソッドまとめ
## 初めに
こんにちは、だいごです。
今回はRubyのto_○メソッドをまとめていきます。
よかったらご覧ください。## to_○メソッドまとめ
今回まとめていくto_○メソッドは以下に記すものになります。
– to_sメソッド
– to_iメソッド
– to_aメソッド
– to_fメソッド
– to_hメソッド
– to_symメソッド今回はまとめないメソッドはこちらになります。
– to_cメソッド(=複素数に変換)
– to_rメソッド(=有理数に変換)### to_sメソッド(s:string)
文字列以外のオブジェクトを文字列に変換するメソッド。“`ruby
オブジェクト.to_s# 使用例
10.to_s
=> “10”
nil.to_s
=> “”
hoge.to_s
=> “hoge”
“`### to_iメソッド(i:integer)
文字列を整数に返すメソッド。
また、小数を整数に変換することもできる。
もし、文字列に整数と認識できないものがあれば、その場合は0を返す。“`ruby
文字列.to_i# 使用例
“10”
【rails】chartkick導入ガイド
# はじめに
個人開発の過程でkickchartを利用する機会があったのですが、日本語の記事でわかりやすいものがあまり見つからなかったので公式ドキュメントを日本語化&個人的に役に立った内容を記載しておきます!kickchartを利用する際の参考にしてください!!# 導入
まずはkickchartの導入からです。rails のバージョンによって導入方法が違うので注意してください!
どのバージョンであってもまずはgemファイルに以下の記述を書き加えてください!!“`ruby:gemfile.rb
gem “chartkick”
“`## rails7の場合
configのimport.rbに以下の記述を追加してください。
“`ruby:config/importmap.rb
pin “chartkick”, to: “chartkick.js”
pin “Chart.bundle”, to: “Chart.bundle.js”
“`また、app/javascript/application.jsに以下の記述を追加してください。
“`ruby:app/j
【Ruby】あるメソッド内で別のメソッドを呼び出す時に意識すること
こんにちは。
早く駆け出したい @iloveomelette です。突然ですが、みなさんはあるメソッド内から別のメソッドを呼び出したい時のインスタンスメソッドとクラスメソッドの使い分けはできますでしょうか。
恥ずかしい話ではありますが、私はあやふやでよく`NoMethodError`を出していました。今回、勉強したことをここにアウトプットしていきますので、
私と同じく使い分けが曖昧な方はサラッとでも良いので、参考にしてくださると幸いです。尚、ご指摘箇所がございましたら
ご教授いただけますと幸いです。## 問題
いきなりですが、問題です。
以下の`Actress`クラスにある`yoshioka`メソッドはブロック内にある`arimura`メソッドを呼び出すことはできるでしょうか。“`ruby
class Actress
def self.yoshioka
arimura
enddef arimura
puts ‘Hello World!!’
end
endActress.yoshioka
“`正解は…
“`zs
インフラエンジニアがRubyでAPI作ってみた②
## 前置き
前回の記事に引き続き、今回もRubyでAPIを作成していきます。
Docker Desktop,SequelAce, Rubyがインストールされている方は同じように作ることができます。https://qiita.com/KentaroYoshizumi/items/f8c6d002972b61e10001
参考記事:
https://qiita.com/mokio/items/7d36a7aa79a4bf5066e9
今回は前回よりも少しだけ難易度をあげて、
①ローカルにMySQLコンテナを作る。(アクセスできることを確認する)
↓
②ローカルでAPIを作る。(DBに値を登録する。)
↓
③コンテナ内のDBを参照してみる。といった流れで進めようと思います。
## ①ローカルにMySQLコンテナを作ってアクセスしてみる。
まずは今回作成する一連のファイルを配置するためにディレクトリを切っていきます。
“`
$ mkdir API_sample
“`
作成したディレクトリに移動します。“`
$ cd API_sample
“`このディレク
Rubyではメソッド名と同じ名前のローカル変数を宣言しないようにしよう
## はじめに
問題です。次のプログラムを保存して実行したとき、ターミナルにはどのような結果が表示されるでしょうか?“`ruby
# fromからtoまでの連続した整数を配列として返す
def numbers(from: 0, to: 10)
(from..to).to_a
enddef main
p numbersnumbers = numbers(from: 3, to: 7)
p numbers
p self.numbers
p numbers()
endmain
“`はい、答えはこうです。
“`
$ ruby sample.rb
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`予想は当たりましたか?
## 簡単に解説
`main`メソッドの振る舞いにコメントを付けていきます。Ruby初心者の方もこれでなんとなく理解でき
Ruby 変数のスコープ レキシカルスコープ
## はじめに
RubyとJavaScriptの違いに手間取ったので備忘録**JavaScriptのコード**
“`js
let sample = “tee”const hello = () => {
if(sample === “tee”) {
return “teeです”
} else {
return “該当しません”
}
}console.log(hello()) //出力結果 “teeです”
“`**Rubyのコード**
“`rb
sample = “tee”def hello
if sample == “tee”
return “teeです”
else
return “該当しません”
end
endputs(hello())
# 出力結果
# undefined local variable or method `sample’
“``JavaScript`では関数の外側(レキシカルスコープ)の変数を参照可能です。
`Ruby`ではできない。これちょっとひっかりました・・・
初めて
Rubyのテスト(Minitest)を初めて使ってみた
Rubyのテストフレームワークを使ってみました。
テストを書くことについて
前提として、テストを書くことは非常に重要で、
環境が壊れていないこと、コードが記載通りに実行できることの確認をすることができます。環境が壊れていなくても、
バージョンの違いなどによって、動くはずのコードが実は動いていない!!など、起こり得ることです。基本的に、以下の順序で行うものだと学びました。
① 意図的にエラーが起こることを確かめる(異常系)
② ①を変更して、正常に動作することを確かめる(正常系)今回は、RubyのテストフレームワークのMinitestについてです。
上記の、①、②の順序でテストを実行してみます。テストの実行と解説
コードをまずは書いてみましょう。
“`
require ‘minitest/autorun’class RubyTest < Minitest::Test def test_ruby assert_equal 1, 1 + 1 end end ``` まずは、以下でMinitestライブラリを呼び出
Anitage+
https://bitsend.jp/
Ruby on Rails 6.1.5 を Ruby 2.7.6 から Ruby 3.0.4 にあげるときにやること
掲題の作業を実施したところ、色々とハマったので、備忘録として残しておきます。
## 環境
* Ruby 2.7.6 -> 3.0.4
* Ruby on Rails 6.1.5## Ruby 3.0.4 にあげるときに必要なこと
### (WEBrick 以外を使っていない場合) WEBrick をインストールする
#### 理由Ruby 3.0.0 より WEBrick が標準ライブラリから削除されました。そのため、Ruby 3.0.0 以降で WEBrick を使いたい場合は、別途インストールが必要になります。
https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/
### bootsnap 1.9.3 以上にする
Ruby 3.0.4 で `rails s` を実行すると以下のエラーが発生します。
“`
% bundle exec rails s
$RUBY_HOME/3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/compile_cache/iseq
Ruby 配列の中にあるハッシュをeachで回す方法
## 実現させたこと
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1248903/bf5eb9a1-d8fd-7661-7bad-b195478d4bd1.png)
上の写真の左側は画像、右側はaタグでそのアカウントに飛ぶようになっている。
ここまでやったこと順番に解説する。## 実装手順
### データ取得
“`
apps/controllers/application_controller.rbinsta_accounts = LvtInstaAccount.all
@insta_info = []
insta_accounts.each do |insta_account|
data = {}
data[“screen_name”] = insta_account.screen_name
data[“profile_picture_url”] = insta_account.profile_picture_url
インフラエンジニアがRubyでAPI作ってみた
## 自己紹介
はじめまして。
普段はインフラエンジニアとして業務に当たっております。
未経験からエンジニア転職をした身なので、業務の中でこんなにもコードを書かないものかと、転職前とのギャップに驚いています。
あまりにコードを書かなくて成長を実感しなくなったため、業務外でAPIを作って遊んでみることにしました。
どうぞお付き合いください。## 今回作るAPI
バンド名とバンドID,曲の名前を返す簡単なものを作成したいと思います。
ただし最初はローカルにサーバーを立てて実行しますが、次回にはDB側をコンテナに、最終的にはAPIもDBもコンテナで動かすという風に、徐々に難しくしていけたらと思います。## 手順(1)
①railsプロジェクトを立ち上げる
↓
②modelを作る
↓
③仮のデータを流し込む
↓
④ルーティングを設定する
↓
⑤コントローラを記述する
↓
⑥実際に叩いてみるシンプルですがこの手順でいこうと思います。
のちに難しくしていきます。
あくまで作って動かしてみることを目的としていますので。### railsプロジェクトの立ち上げ
ターミナルから以下を実
【初心者】Ruby on Railsでブログを作る
# 概要 :feet:
Ruby on Railsの学習をしています。
1日1つRailsで練習アプリを作る生活3日目です。明日から、アプリ開発をしようと思っているので最終チェックですね!
参考サイトのを簡略化して実装しているだけなので、詳しくしたり方はそちらをご覧ください。
# 新規アプリを作成 :feet:
“`shell
ubuntu@ubuntuv:~/デスクトップ/projectX$ rails new blog
ubuntu@ubuntuv:~/デスクトップ/projectX$ cd blog
ubuntu@ubuntuv:~/デスクトップ/projectX/blog$ bundle update
ubuntu@ubuntuv:~/デスクトップ/projectX/blog$ bundle install
“`# Hello Ruby on Rails :feet:
`GET`した`articles`リクエストを`ArticlesController`の`index`アクションに対応付ける
つまり、`/articles`にアクセスが来たら、`hel
API 経由で起動する Shopify Flow のトリガーを自作してみた
## 概要
**Shopify Flowとは**
Shopify のエンタープライズプラン「Shopify Plus」 を利用すると使えるようになるオートメーション機能。Shopify で構築した自身のストア上における顧客の行動をトリガーに様々なアクションを自動で行ってくれる。`Trigger → Condition → Action`
– Trigger(トリガー)
– ワークフローを開始させるイベント
– Condition(条件)
– アクションを実行するかどうかの条件
– Action(アクション)
– 条件が満たされた時に行われる内容“`:ex.
・ ある商品の在庫数が◯個以下になった際に Slack 通知を飛ばす
・ ○円以上の買い物をした顧客に対して特別なタグを付与する
・ 顧客が新規登録されるたびにそのデータをスプレッドシートに記録する
“`> ![スクリーンショット 2022-04-21 23.46.54.png](https://qiita-image-store.s3.a
Rails+docker環境構築でyarnが上手くインストールできない
## 概要
Rails6系とdockerで環境構築する際に詰まったので、その原因と解決方法についてを書いています。## 事象
– dockerfileを使って、docker環境にRailsサーバを立てようとした。
– その際、Railsを使う際の環境要件としてYarnが必要となるが、上手くインストールできなかった。webpackerをインストールしようとすると…
“`
RUN bundle install && rails webpacker:install
“`
バージョン1以上2以下のyarnが必要ですという下記エラーが発生。
“`
Webpacker requires Yarn “>=1 <2" ``` apt-get installでインストール済みと想定したが、上記エラーにより上手く入っていないことが分かった。 ``` RUN apt-get install -y yarn ``` ## 原因 - yarnのバージョンが古い エラー文の内容をヒントにして原因をググってみたところ、yarnのバージョンが古いと今回のようなエラーが発生するそう。 ## 解決方
Railsの {OO: :OO} これ何⁇ {OO: OO} とどう違う?
# Railsによく出てくるシンボル、ハッシュについて
## 結論
`{OO: OO}`は、ハッシュのキーとしてシンボルを用いた形である。
そして、
`{OO: :OO}` は、キーがシンボルで値もシンボルであるハッシュのことを指している。
これについて以下で詳しく調べてみる。
## シンボルって何?
文字列の先頭に`:(コロン)`がついているオブジェクトのことを指す。
Stringオブジェクトが文字列を表すのに対して、Symbolオブジェクトは名前を表すものと理解しておく。
##### 1 シンボルは書き換えられない
文字列は書き換えることができるが、シンボルは変更不可である。
##### 2 同じobject_idが割り当てられる
シンボルは同じobject_idが割り当てられるので、以下の通り2つのオブジェクトは同一である。しかし、文字列は2つのオブジェクトは等しいが同一ではない。
“` ruby:ruby
# 文字列
“foo1” == “foo1” #=> true
“foo1”.equal? “foo1” #=> false# シンボル
:foo1 =
【Rails】データベースを元に戻す方法
# はじめに
Railsでアプリを開発しているときに、、
やっばっ!!間違って「rails db:migrate」しちゃった!!:cloud_lightning:ってときありますよね。
そんな時に使える「元に戻す方法」を伝授します:older_man::sparkles:
# 元に戻す方法
### マイグレーションの変更を元に戻す
“`
$ rails db:migrate
# を元に戻したい場合は、、$ rails db:rollback
# とすればOK!
“`ちなみに、最初の状態に戻したい時は
“`
$ rails db:migrate VERSION=0
# とすれば戻ります!
“`## その他、元に戻す方法
### コントローラー
“`Ruby
$ rails generate controller StaticPages home help
# 生成したコントローラーを元に戻すには$ rails destroy controller StaticPages home help
# として削除すればOK!
“`
コントローラー名、アク