- 0.0.1. 【rails】rails g controllerコマンドでapi/以下にファイルを生成するコマンド
- 0.0.2. RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた
- 0.0.3. Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方
- 0.0.4. Rails6 を Docker で開発する為に準備する
- 0.0.5. Ruby と Go それぞれで依存性の注入を書く
- 0.0.6. 【Rails6】コンソールでアソシエーションを理解しよう①(一対多)
- 0.0.7. Railsで腹ぺこカバ問題を解いてみた時の気付き
- 0.0.8. CrystalでWebAssemblyに出力した関数をRubyから呼び出す
- 0.0.9. Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略
- 0.0.10. sinatra-contribのgem入れたけど動作しないなぁと思ったけど、時間が経ったら動いた件
- 1. 問題
- 2. 結論
- 3. 問題発生の経緯
- 3.0.1. includeしてるのにN+1問題が発生した理由
- 3.0.2. 【RUBY】if,elseを用いたメソッドの実装
- 3.0.3. Hotwire勉強会ログ (1) Turbo
- 3.0.4. Carrierwave 使用時にNoMethodError: undefined method `closed?’ for nil:NilClass が発生した
- 3.0.5. AWSのSigV4署名を付与してHTTPリクエストを送るRubyとGoのサンプルコード
- 3.0.6. プログラミングが副業になるロードマップ
- 3.0.7. ./main.rbで実行できなかったけど、ruby main.rbで余裕で実行できた件
- 4. 問題
- 5. 結論
【rails】rails g controllerコマンドでapi/以下にファイルを生成するコマンド
## はじめに
自分はAPIモードを使わずにapi/以下にコントローラーを作っていて、お目当ての情報にたどり着くのに時間がかかっていたのでメモ
### 参考
https://qiita.com/terufumi1122/items/634dac88de01f3f73821## 環境
“`ruby
OS: macOS Monterey
Ruby: 3.1.2
Rails: 7.0.4
“`## コマンド
“`console
rails g controller api/v1/posts
“`
RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた
[Ateam Group U-30 のカレンダー](https://qiita.com/advent-calendar/2022/ateam-group-u30)の2日目はQiitaの @kyntk が担当します。
—
今年、RubyGems 3.3.11でRust extensionsのexperimentalリリースがありました。
https://blog.rubygems.org/2022/04/07/3.3.11-released.html
変更されたPull Requestは↓です。
この変更で`CargoBuilder`が実装され、`Cargo.toml`ファイルを見つけるとcargoでRustのビルドができるようになりました。
今まではRust用にビルドの設定をする必要があったのですが、かんたんにビルドができるようになりました。https://github.com/rubygems/rubygems/pull/5175
ちょうど、Qiita社でもRustを使う機会がありそうだったので、勉強がてらRustでgemを作成してみました。
:::note wa
Ruby 3.0 に含まれる非互換「位置引数とキーワード引数の分離」の乗り越え方
## 0. はじめに
“`text
おはよう、Ruby エンジニアの皆さん。2022 年も年の瀬となりましたが、元気にしていますか?実を言うと Ruby 2.7.x はもうだめです。突然こんなこと言ってごめんね。
でも本当です。今年の 4/12 に Ruby 2.7.6 がリリースされました。
それが終わりの合図です。程なく始まるセキュリティメンテナンスフェーズは 1 年しかないので気をつけて。
それがやんだら、少しだけ間をおいて終わりがきます。
“`**参考:** [「実を言うと、地球はもうだめです。」](https://alu.jp/series/%E6%9C%80%E7%B5%82%E5%85%B5%E5%99%A8%E5%BD%BC%E5%A5%B3/article/V6fWmBCTyJYu3xZwTCCi)
## 1. 要するに、来年の 4 月で Ruby 2.7.x のサポートが終了します
そんなわけで、見て見ぬ振りをしてきた、あなたのプロジェクトの Ruby バージョンの更新も、ついには年貢の納め時というわけです。まだ時間は残されていますので、年内
Rails6 を Docker で開発する為に準備する
# 初めに
プロジェクトの技術選定の中で、`Rails6` を検討しており、**「せっかく新規で開発するならDockerで開発したいよね」** という話になったので、`Docker` を使って `Rails` プロジェクトの作成までの手順をまとめておきます。
# 概要
## 事前準備
– Docker for mac のインストール
– base Image の取得 docker pull ruby:2.6.5-alpine3.10
(これにした理由は、Small. Simple. Secure だからです)## Rails プロジェクトの作成
### 1. Login to docker container
Docker container に入って `Rails` プロジェクトを作成します。
作業ディレクトリで以下のコマンドを実行します。“`.bash
$ docker run -v $PWD:/usr/src/ –rm -it ruby:2.6.5-alpine3.10 /bin/sh -c /bin/sh
“``-v $PWD:/usr/src/
Ruby と Go それぞれで依存性の注入を書く
## はじめに
これは [株式会社 RetailAI X Advent Calendar 2022](https://qiita.com/advent-calendar/2022/retail-ai-x) の 2 日目の記事です。昨日は @kametaro さんの記事でした。 [RaftのErlang実装ことはじめ – Qiita](https://qiita.com/kametaro/private/a680d74da572f43ae493)
本日は、「 Ruby と Go それぞれで依存性の注入を書く」です。
Ruby の DI の是非は問いません。## 環境
Ruby 2.6.1
Go 1.18.2
macOS Monterey ver. 12.3.1 Apple M1## Ruby
?
“`ruby
class SubmachineA
def sub_process
# …
end
endclass Machine
def main_process
SubmachineA.new().sub_process
end
end
【Rails6】コンソールでアソシエーションを理解しよう①(一対多)
この投稿は、
[DMM WEBCAMP mentor Advent Calendar 2022](https://qiita.com/advent-calendar/2022/infratop_mentor)
の投稿2日目のエントリーです。1日目は @Keichan_15 さんで
[Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略](https://qiita.com/Keichan_15/items/eae011dccea44abda768)
です。「翻訳ファイルあたらね〜」となる事は多いハズなので、初学者の方には嬉しい記事ですね。## はじめに
最近DMMでメンターをやらせていただいております。 @tomoaki-kimura です。
RailsはRailsが隠しているコードを理解する事で、ぐっと扱いが上手になります。
今回は、今更のアソシエーションをRailsコンソールを使ってRailsのアソシエーションを理解していきましょう。## 環境と前提
– ruby 3.1.1
– Rails 6.1.7
– yarn 1.22.18(今回モデルし
Railsで腹ぺこカバ問題を解いてみた時の気付き
# INDEX
1. 最初に問題のルールと回答。
2. 最後に俺の最初の考えとやるべきだったこと# やること
“`ruby
あなたの仕事は、Gameという単純なクラスを作成することです。
このクラスは、カバが何回アリーナの中央に飛び込んで食べ物を集める必要があるかをチェックします。
すべての食べ物を見つけることができる場所を定義する、ボードと呼ばれる整数配列が与えられます。カバがすべての餌を食べるために必要な飛躍の量を表す整数を返す必要があります。
“`# 条件
“`ruby
1.ボード配列には、スペース用の0と食品用の1が含まれています。
2.ボードのサイズは n*n で、n は5~50です。
3. 1 つの跳躍は、互いに水平または垂直に接続された
食品で構成されます。それらが接続されていない場合は、別の飛躍が必要です。
“`# 初期状態
“`ruby
board = [[1,1,0,0,0],
[1,1,0,0,0],
[0,0,0,0,0],
[0,0,0,1,1],
[0,0,0,1
CrystalでWebAssemblyに出力した関数をRubyから呼び出す
## はじめに
この記事は昨日の記事の続編です。前回はCrystalで書いたコードをWebAssemblyにして、wasmer や wasmtimeで実行しました。
https://qiita.com/kojix2/items/4c9376b7e46bfe72d823
今回は、Crystalで書いた関数をWebAssemblyに出力し、Rubyから呼び出して使ってみます。
## 前回のおさらい
CrystalはLLVMの機能を利用して、WebAssemblyを出力できる。
その際、コンパイル済みのwasmのライブラリを入手してリンクする必要がある。コンパイル済みライブラリを以下のリポジトリのリリースから入手する。(本記事作成時点では 0.0.2 が最新)
https://github.com/lbguilherme/wasm-libs
CUI操作でダウンロードする場合以下のコマンド
“`sh
wget https://github.com/lbguilherme/wasm-libs/releases/download/0.0.2/wasm32-wasi-libs.
Rails I18n(日本語化)を使用する場合の躓きポイント徹底攻略
# はじめに
こんにちは!
記念すべき **DMM WEBCAMP mentor Advent Calendar 2022** :christmas_tree: **1日目** を担当します @Keichan_15 です!普段はDMM WEBCAMPで受講生さんの質問対応などを行うメンターとして働いております!
今回は、日頃から受講生さんの対応を行う中で特に躓きが多かった箇所である **「I18nを用いた日本語化が反映されない」** 問題を解決していこうぜ! といった記事になります。本記事では主に、
– **I18nって何のこと?**
– **日本語化したのに反映されないよ…**と疑問や悩みをお持ちである、多くの方々の助けとなれれば幸いです!
また本記事が自身のQiita初執筆になりますので、多々目に余る箇所などがあるかとは思いますが温かい目で見守って頂けますと幸いです…。
よろしくお願い致します!# 1. そもそも I18n は何ができるの?
まず I18n とは何なのでしょうか。
I18n は **internat
sinatra-contribのgem入れたけど動作しないなぁと思ったけど、時間が経ったら動いた件
問題
sinatra-contribのgemをインストールしたけど,gemを実行できない。
結論
・時間が経てばしっかり反映された。
![スクリーンショット 2022-12-01 22.24.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708737/7def1822-4e2d-579b-bb77-7077e850e365.png)
問題発生の経緯
・sinatra-contribのgemをインストール
“`
#/Users/ユーザ名/Work1
gem install sinatra-contrib –no-document
Fetching multi_json-1.15.0.gem
Fetching sinatra-contrib-3.0.4.gem
Successfully installed multi_json-1.15.0
Successfully installed sinatr
includeしてるのにN+1問題が発生した理由
### 初めに
イベントの日程調整アプリのrailsAPI作成中に躓いた時の備忘録1. answers_controllerのupdateアクションで紐づくschedule_answers(回答ステータス)を編集しようとするとN+1問題が発生した
2. HTTPリクエスト送信一度目はN+1問題が起きるがschedule_answerの更新は保存はされており、そのまま続けて送信するとupdateは完了### ER図
![スクリーンショット 2022-12-01 15.46.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629116/6d84b59d-e9f6-54ee-646c-8982a35d4a4c.png)### 原因
accepts_nested_attributes_forで、
– answersモデルとschedule_answers
– possible_datesとschedule_answersとを紐付けていたため、たとえanswer経由でも、schedules
【RUBY】if,elseを用いたメソッドの実装
# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。# 実装内容
スクールの問題を解いていて、考え方を定着させる備忘録として記していきます。
今回は、
正の整数を入力します。その整数が、
10の倍数(10,20,30…)からの差が2以内であるときはTrue
それ以外はFalse
と出力するメソッドを作りましょう。
というものでした。“`ruby
def near_ten(num)
quotient = num % 10
end
“`
まず、メソッドを「near_ten」とします。次に「10の倍数からの差」を考えるためには、一の位の値に着目します。すなわち、一の位が「0,1,2,8,9」のどれかであれば「10の倍数からの差が2以内」と判断することができます。
「quotient = num % 10」で10の倍数の余りを求め、変数qu
Hotwire勉強会ログ (1) Turbo
# はじめに
Rails 7から標準となったHotwireについて勉強会をしました。前半はTurboで後半がStimulusです。場所はSENQ六本木のスカイテラスで、晴れていたのですが少し寒かったかもしれません。
https://www.senq-web.jp/office/roppongi
Railsで有名な万葉さんもHotwireをやっていくそうです。
https://note.com/everyleaf/n/ncc0b77578c58
私の場合は最近のRailsのJavaScriptの機能は使っていなくて、Turbolinksはオフにすることが多かったです。Rails 7ではHotwireが標準になってrails-ujsもフェードアウトしていきそうなので、ここは観念して勉強しようと思いました。
そしてForkwellさんのDHHへのインタービュー動画を見たことも影響しました。
AWSのSigV4署名を付与してHTTPリクエストを送るRubyとGoのサンプルコード
この記事は、[リンクバルアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/linkbal)の1日目の記事です。
## はじめに
SigV4署名を付与してHTTPリクエストをするRubyとGoのサンプルコードです。AWSで、IAM認証をしたAPI GatewayのAPIをリクエストするときなどに、SigV4署名は必要になります。
AWS SDKには、SigV4署名を付けてAPI Gatewayをリクエストしてくれる便利なAPIは存在しないので、SigV4署名の部分は実装する必要があります。ただし、署名をするためのライブラリは用意されているので、そちらを使えばすんなり署名ができます。
## Ruby
### ドキュメント
https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Sigv4/Signer.html### サンプルコード
重要な部分はコメントで説明しています。“`rb
require ‘aws-sdk-core’
require ‘net/http’
プログラミングが副業になるロードマップ
# 要約
本稿ではプログラミングをする上で必要な知識について解説をした。
時間がない人やとりあえず行動したい人向けに誤解を恐れずに内容を簡潔に伝えるならば
「脱初心者するためには登録料無料のクラウドソーシングサイトに登録をし案件を獲得してみよ。」
ということである。
例としてLancersを挙げている。とりあえず行動してみたい人は登録をし自分のプログラミングスキルで可能な案件がないか探してみてほしい。
https://www.lancers.jp/affiliate/track?id=2484168&link=%2F
# 序文
プログラミングにゴールはなくプログラマーは常に学び続けなければならない。
これはプログラミングをする上での定説である。
しかし、プログラミングに興味を持つ人やプログラミング初心者がそんなことを聞いてしまえば挫折してしまうだろう。
その為本稿ではプログラミングをする上で脱初心者の条件とも言えるプログラミングでお金がもらえるまでの道をロードマップとして作成した。
本稿がプログラミングを始めようと考えている人やプログラミング初心者の力になれば幸
./main.rbで実行できなかったけど、ruby main.rbで余裕で実行できた件
問題
・sinatraで書いたファイルをchmodコマンドを実行した後に./コマンドで実行することができない。
“`
#/Users/ユーザ名/Work1
chmod +x main.rb #実行属性をファイルに付与
./main.rb #カレントディレクトリ直下のコマンドを実行
./main.rb: line 2: require: command not found
./main.rb: line 4: get: command not found
./main.rb: line 5: Hello World: command not found
./main.rb: line 6: end: command not found
“`結論
・./コマンドの代わりにrubyコマンドで実行すればいけた。
“`
#/Users/ユーザ名/Work1
ruby main.rb
[2022-11-30 23:18:57] INFO WEBrick 1.6.0
[2022-11-30 23:18:57] INF
【Ruby】フィボナッチ数列を出力する方法
# 問
**フィボナッチ数列をn=10まで出力しなさい**
ただしフィボナッチ数列とは
f[0] = 0
f[1] = 1
f[n] = f[n-1] + f[n-2] (n >= 2)
の数列である。# 結論と解説
## コード
“`ruby
# 空のハッシュfを作る
f = Hash.new# 0~10の数列に対してeach文を回す
(0..10).each do |n|
if n == 0
f[n] = 0 # n = 0のとき、値は0
elsif n == 1 # n = 1のとき、値は1
f[n] = 1
else
f[n] = f[n-1] + f[n-2] # n >= 2のときは前項と前々項の値の和
end
endputs f # ハッシュの出力
“`## 出力結果
“`ruby
{1=>1, 2=>1, 3=>2, 4=>3, 5=>5, 6=>8, 7=>13, 8=>21, 9=>34, 10=>55}
“`### おまけ
**i項目の値が知りたいとき**
“`ruby
puts f[i] #
Vue3、Rails7系を使って「Hello Vue」を表示させるまで
Vue3、Rails7系を使って、何かアプリを作ってみたいなぁと思い、環境構築の段階で
学んだことを備忘録として残そうと思いました。# 環境
ruby 3.1.0
Rails 7.0.4
vue@3.2.41
# railsの初期化railsの初期化(アプリ作成)
“`ruby
raiils new sample_app
“`
# vueの初期化**次にvueを導入していくが、いきなりつまりポイント**
railsの標準に搭載されているwebpackerでvueを導入していくつもりが・・・
“` ruby
rails webpacker:install: vue
=> Don’t know how to build task ‘webpacker:install:vue’
“`コマンドが使えない・・・
[曰く](https://github.com/rails/webpacker/issues/3052) rails7系 では、vueのインストールコマンドがなくなっているっぽい。というか、[引退宣言](https://github.com/rails
【Ruby】1~100の数字の中から素数を出力する方法
# 問
**1~100の数字の中から、素数を出力するコードを書きなさい**# 結論と解説
## コード
“`ruby
num = [*1..100] # 1~100の数をもつ配列numを作成
non_prime_number = [] # 素数ではない数を入れるように空の配列non_prime_numberを作成num.each do |n| # numに対してeachを回し、素数ではない数を探す
non_prime_number << n if n == 1 # 1は素数ではない # 2は素数なので処理なし if n >= 3
i = 1 # while文内で使う
while true # 無限ループを作る
i += 1 # iは2からスタートさせる
# iを2~nで変化させ、n / iの余りが0であったらnは素数と判定
non_prime_number << n if n % i == 0 # iがnのひとつ前の数になるか、nが素数でない数であったらループ終了 break if i