- 1. 【Rails】resourcesとresourceの違い
- 2. Ruby on Rails 備忘録
- 3. 【Jbuilder】うまくJSONを返せないときに確かめること
- 4. .idと_id 違いについて ruby rails ルーティングのネスト 親子関係
- 5. Ruby 備忘録
- 6. anyenvでrbenv自体をアップデートして、最新のRubyのバージョンをインストールする
- 7. AWS SAMのCORSを設定する(REST APIバージョン)
- 8. RuboCop のエラーを全て todo に放り込んで安寧を得る
- 9. 【Ruby のまずいコード】正規表現で特定の文字を囲む
- 10. 道を文字列に変換して保存する方法【Google Map JavaScript API, Ruby】
- 11. 〇〇に潜む、△△
- 12. Rubyのプログラムでピコの温度センサーを読みとりたい
- 13. Rails 6 + Webpacker 環境における Chart.js の導入手順
- 14. RubyでSlackのbotをつくる2021:Socket Mode編
- 15. ruby 3.0.3を入れる
- 16. 初めてWebアプリケーションを作る過程
- 17. Rails Devise インストール方法
- 18. 【Rails】ActiveRecordで合計(sum)した列に列名(AS句)をつけたい【GROUP BY】
- 19. 【Ruby】「A && B && C」のリファクタリング
- 20. railsアプリの新規作成〜TOPページの作成
【Rails】resourcesとresourceの違い
表記ミスかと思ったらちゃんと“`resource“`も存在した。
##resources
“`routes.rb
…
resources :posts
…
“`“`
Prefix Verb URI Pattern Controller#Action
posts_path GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post_path GET /posts/new(.:format) posts#new
edit_post_path GET /posts/:id/edit(.:format) posts#edit
post_path GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format)
Ruby on Rails 備忘録
https://prog-8.com/
##新規プロジェクト
* 入力したアプリケーション名と同名のフォルダが作成され、その中に開発に必要なフォルダやファイルが用意されます。“`
rails new tweet_app
“`
##サーバーの起動
* 開発中のアプリケーションをブラウザで表示するためには、サーバーというものを起動する必要があります。サーバーの起動は、「rails server」というコマンドを実行するだけで完了です。
サーバーを起動した後、ブラウザで「localhost:3000」というURLにアクセスすると、右図の初期画面が表示されるようになります。“`
rails server
“`
##ビュー /トップページの作成* 新しいWebページが自動で作られ、「localhost:3000/home/top」というURLにアクセスできるようになります。
“`
rails generate controller home top
“`
|ポイント|説明|備考|
|—-|—-|—-|
|top.html.erb|ディレクトリ:app/vi
【Jbuilder】うまくJSONを返せないときに確かめること
##その1:名前一致しているか
ファイル名やルーティングが一致してないとエラーが出たり、JSON表示できない。
特に2回くらい“`複数形s“`忘れしてるのでもう忘れない。“`routes.rb
namespace :api, format: ‘json’ do
namespace :v1 do
resources :post_infos, only: [:index]
end
end
“`“`app/views/api/v1/post_infos/index.json.jbuilder
json.result ‘success’
json.post_infos do
json.date @post_infos[:date]
json.genre @post_infos[:genre]
json.like_count @post_infos[:like_count]
end
“`##その2:APIアプリケーションコントローラーを継承しているか
“`app/controllers/api/v1/post_infos_controlle
.idと_id 違いについて ruby rails ルーティングのネスト 親子関係
〇〇.idでしかうまくいかない時と〇〇_idでしかうまくいかない時ありますよね
一度は学習したんですがふと疑問に思い説明できなかったので自分の解釈で説明してみます。
まず基本は〇〇.idなど「.」を使うことで解決できます。
ではなぜ〇〇_idのような時が発生するんでしょうか?
それはルーティングのネストにあります。
ルーティングにおけるネスト(親子関係を示す)とは、コントローラーのルーティングの中に、別のコントローラーのルーティングを記述することです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2274768/596e9b6c-4dbe-211e-4ce3-47c3c0061d65.png)こうなると「 _ 」が発生してしまいます。
itemsの中にordersがいますよね、これで親がitems 子がorders になります。
なぜかというと、
![image.png](https://qiita-image-store.s3.ap-northeast
Ruby 備忘録
##コメント コンソールログ
“`rb
#コメント
puts “hello world”
“`##変数 文字列との連結
“`rb
name = “阿部寛”
puts name
#○
puts “私は#{name}です”
#× エラー
puts “私は” + name + “です”
“`
|ポイント|説明|
|—-|—-|—-|
|#{変数}|特に無し||
|””|ダブルクウォーテーションで囲う||##配列
“`rb
languages = [“ラーメン”, “カレー”, “寿司”]
#ラーメンを出力
puts languages[0]
“`##if
“`rb
score = 73
if score > 80
puts “優”
elsif score > 60
puts “良”
else
puts “不可”
end
“`
anyenvでrbenv自体をアップデートして、最新のRubyのバージョンをインストールする
rubyやpython, nodeなどのプログラミング言語の異なるversionを管理できる[anyenv](https://github.com/anyenv/anyenv)
これのなかでrubyについてインストール可能なリストの中に最新版が見つからない場合に、rbenv自体を更新して最新版のrubyを取得するしインストールします
### rbenvの更新コマンド
“`sh
anyenv update rbenv
“`### 更新後のリスト
“`sh
rbenv install –list
2.6.9
2.7.5
3.0.3
jruby-9.3.2.0
mruby-3.0.0
rbx-5.0
truffleruby-21.3.0
truffleruby+graalvm-21.3.0Only the latest stable releases for each Ruby implementation are shown.
Use ‘rbenv install –list-all / -L’ to show all local versions.
“
AWS SAMのCORSを設定する(REST APIバージョン)
## 困っていたこと
ローカル開発環境で、ブラウザでReactからAWS SAMのAPI Gatewayを叩きたかったのですが、CORSに行く手を阻まれておりました。下記は、CORS未設定の状態でAPIを叩いたときにブラウザのコンソールに出るエラーメッセージです。
>Access to fetch at ‘http://127.0.0.1:3001/hello_world’ from origin ‘http://127.0.0.1:3000’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resourc
RuboCop のエラーを全て todo に放り込んで安寧を得る
RuboCop のエラーが多すぎて何から手をつければいいかわからない!という事態が、発生するところでは発生するらしいです。
主に、RuboCop のメンテがうまく行っていない場合に。そんな時に、ある程度の作業をもって RuboCop を正常終了させるやり方を記載します。
## 前提
– RuboCop がアプリケーションに導入されている
– RuboCop が開発環境に install されている
– `bundle exec rubocop` を実行するとエラーが大量に発生して、正直手をつけられない## ゴール
– `bundle exec rubocop` が正常終了すること
– 既存コードの問題はスルーされて、新規の違反があった時だけ指摘されるようにすること## 試したバージョン
– rubocop: 1.22.3## やり方
### 光の技術
光の技術は、実施するだけで皆が拍手で歓迎してくれるような作業です。
#### layout 系の自動修正
下記コマンドを実行して layout 関連の変更を自動で適用します。
“`bash
$ bundle
【Ruby のまずいコード】正規表現で特定の文字を囲む
# お題
引数として与えられた文字列中の小書きの片仮名を `【 】` で囲んだ文字列を返すメソッドを書いてください。
小書きの仮名とは「っ」「ァ」などのことです[^kgk]。
ここでは,片仮名の「ァ」「ィ」「ゥ」「ェ」「ォ」「ッ」「ャ」「ュ」「ョ」「ヮ」のみを対象とします。[^kgk]: 小書きの仮名は拗音,促音,外来語その他の表記に使う。
例えば
“`rb
puts kogaki_mark(“キャッシュ”)
# => “キ【ャ】【ッ】シ【ュ】”
“`となります。
# コード
“`rb
def kogaki_mark(str)
str.gsub(/[ァ|ィ|ゥ|ェ|ォ|ッ|ャ|ュ|ョ|ヮ]/, ‘【\0】’)
end
“`# 問題点
このコードは,引数によっては正しく動作しません:
“`rb
puts kogaki_mark(“A|B”) # => “A【|】B”
“`与えられた文字列中の `|` という文字が `【 】` で囲まれてしまいました。
正規表現の書き方が間違っているのです。
文字クラスの `[ ]` の中で選択[^sngn]
道を文字列に変換して保存する方法【Google Map JavaScript API, Ruby】
## 概要
本記事は RUNTEQアドベントカレンダー 2021 の10日目の記事となります!自分はデリバリーのアルバイトをしているのですが、自分の使っている近道や裏道を保存して誰かと共有できたら良いなあと思いました。
そこで、現在勉強しているRuby,Ruby on Railsを使って道を保存してGoogle Mapに表示させるお試しの機能を作ってみました。
https://polyline.herokuapp.com
↑クリックするとマーカーを置かれ、2つ以上マーカーが置かれると道が引かれます。
![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1232544/8d1ed7f6-6c5c-3285-c17e-29aeda5e5c78.gif)
## 記事を作成した理由
Qiitaの記事にもGoogle mapについての記事はたくさんありますが、道(一連の座標)を保存するやり方についての記事は無いような気がしたので、この記事を作成しました。
初学者ですので間違いがあ
〇〇に潜む、△△
“`ruby:hisomu.rb
#!/usr/bin/env ruby`nkf /usr/share/mecab/dic/*/*.csv|grep ,名詞,>noun`
lim=3
n=`grep -oE ‘,[ァ-ンー]+,’ noun|sort|uniq|tr -d ,`.split
puts “target,hisomu,hide,candidates”, $*.filter{
_1.size>lim-1&&_1 !~/\s/
}.map{|a|
c=`echo #{a}|mecab -Oyomi`.chomp.chars
(lim..c.size-1).map{
c.each_cons(_1).map(&:join)
}.flatten.filter{
n.include?(_1)&&_1[0]!~/[ァィゥェォッャュョ]/
}.map{
r=`grep -E “^[^,]+,.*,#{_1},” noun`.split(?\n).map{|s|
_=s.split(?,)[0]
_ if a !~/#
Rubyのプログラムでピコの温度センサーを読みとりたい
この記事は[PRK Firmware Advent Calendar 2021 \- Adventar](https://adventar.org/calendars/7086)の12月10日のエントリです。
ほんまや!直しました!ついでにPRK アドベントカレンダーに一筆お願いします!
— hasumikin (@hasumikin) December 2, 2021
お声がけありがとうございます。書いてみました。
#PRK_Firmware アドベントカレンダー2日目の記事です!
RubyだけでLチカできちゃうんです。そう、PRK Firmwareならね(←https://t.co/ytxPpL5ihO— hasumikin (@hasumikin) December 1, 2021
この記事を見て実際にやってみたら、あまりにも簡単にできてしまいました。
「温度センサーを読み取れないかな?」と思ってやってみたのですがうまくいかず、いろいろやっているうちに以下の記事が公開されました。
[回路図~プログラムまで自作するキーボード \- Qiita](https://qiita.com/aikawa_YO/items/a31353d88b8b73f51e8b)
ここに書かれている dev_js ブランチ
Rails 6 + Webpacker 環境における Chart.js の導入手順
![スクリーンショット 2021-12-10 1.21.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/d6602156-2c17-054d-16f1-564269662ca7.png)
## 背景
Railsで作ったアプリにChart.js(JavaScript製のチャート描画ライブラリ)を導入したかったのですが、
– v2系とv3系どちらのChart.jsを使うか
– bundle install と yarn install のどちらで入れるかなど色々な要因が絡み合い、やや苦戦する場面がありました。
特に Rails6 以降は Webpacker の存在もあるため、古めの記事はあまり参考にならない事も多かったです。
そこで今回は比較的新しめの開発環境で Chart.js を導入するまでの手順についてメモを残しておこうと思います。
## 環境
– Ruby 3.0.1
– Rails 6.1.4.1
– Webpacker
– Chart.js 3.6.2
–
RubyでSlackのbotをつくる2021:Socket Mode編
この記事は[『ドワンゴ Advent Calendar 2021』](https://qiita.com/advent-calendar/2021/dwango) 10日目の記事です。
## この記事について
Socket Mode に対応した [Slack](https://slack.com) の bot を Ruby で作る話です。
Slack は機能の追加ペースが結構速いため、 **2021年12月時点での情報(&僕の知っていること)** であることにご注意ください。記事の内容としては割とライトな想定です。
Slack App は非常に高機能なため、最初の取っ掛かりになれば……!### 対象読者
– Slack の bot を Ruby で書きたい
– Slack の API の気持ちを知りたい
– Socket Mode が追加されたのは知ってるが、 RTM API に甘えて 1mm もキャッチアップできてない(先月までの僕です!)### この記事で取り扱う範囲
– (Ruby で)Socket Mode の接続
– (Ruby で)Socket Mode で
ruby 3.0.3を入れる
Ruby 3.0.3を入れる方法
https://qiita.com/gyu_outputs/items/8e0d91f625e1daa8720b
↓以下は自分用です。上の2つの記事を見ればできます。
バージョン確認
$ rbenv versions$ brew update
$ brew upgrade rbenv ruby-build
Ruby 3.0.3が表示される
$ rbenv install -l$ rbenv install 3.0.3
$ rbenv global 3.0.3
確認
$ rbenv versions
初めてWebアプリケーションを作る過程
私にはJava Silver, ORACLE MASTER Silver SQL, Bronze DBAレベルの基礎的な知識はありますが、実際にアプリを組んだことはありません。
何を使い、どんな知識を得て、Webアプリを作っていったのか。
ぶつかった壁や利用して良かったもの、感じたことを記録します。【ロードマップ】
https://journey.prog-8.com/ja/scenes/web-application-development/
Progateの「Webアプリケーションを形にしよう」をベースに学んでいきます。(1/6)サーバーサイドプログラミング
・Ruby 学習レッスン I | Progate
・?(プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus) | 伊藤 淳一 |本 | 通販 | Amazon)→できればWebで学べる教材が欲しい(2/6)オブジェクト指向
・?(オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識 |
Rails Devise インストール方法
#このページの目標
DeviseをRailsにインストールする###環境
ruby 2.6.3
rails 2.6
cloud9#Deviseとは
Railsで作成したアプリケーションに、
ユーザー名やメールアドレスを使用してログインを行うなどの認証機能を簡単に実装する事ができるライブラリ(Gem)#1 Gemfileに追加
Gemfileの最終行にDeviseを追加する。
“`ruby:Gemfile
gem ‘devise’
“`注意:deviseをdeviceと記述してしまわないように気をつける
#2 アプリケーションに読み込む
追加したGemをアプリケーションに読み込むためにターミナルに記述
“`
$bundle install
“`Gemを変更したら必ずbundle installのコマンドを実行する
#3 初期設定を行う
下記コマンドを実行し、初期設定を行う
“`
$rails g devise:install
“`【Rails】ActiveRecordで合計(sum)した列に列名(AS句)をつけたい【GROUP BY】
# はじめに
久々にRailsを弄っているがちょっと詰まったので。# 環境
Ruby 2.6.6
Rails 6.0.4.1
MySQL 14.14# やりたかったこと
適当な例として、商品名,販売価格,販売日を持つ売上テーブルがある。
中身はこんな感じ。“`markdown:売上テーブル中身
select name,money,date from sales;えんぴつ,300,2021-11-01
消しゴム,100,2021-11-01
ボールペン,400,2021-11-03
A4用紙,500,2021-11-03
ものさし,400,2021-11-03
万年筆,8000,2021-11-04
替え芯,500,2021-11-04
“`これを販売日ごとに売上金を合計(sum)して、その集計した列に名前をAS句で別名をつけたかった。
普通にActiveRecordで集計すると列名に応じて自動で集計列が命名される。
“`ruby:日付ごとに売上金を集計するActiveRecord
@sale = Sale.select(“date”).group(“dat
【Ruby】「A && B && C」のリファクタリング
https://medium.com/@bennet.preimess/write-better-code-by-using-patterns-b850c301f27
でこんなリファクタリングの仕方ができると知ったので、
Rubyで書き換えてみた。##JS
**before**“`javascript
if (card == “valid” && tries <= 3 && balance <= 3000) { withdrawMoney(); } ``` **after** ```javascript function canGetMoney() { if (card != "valid") return false; if (tries > 3) return false;
if (balance > 3000) return false;
return true;
}
if (canGetMoney()) {
withdrawMoney();
}
“`##Ruby
**before**
“`ruby
railsアプリの新規作成〜TOPページの作成
###環境
cloud9
Ruby2.6.3###※rubyのバージョン確認方法
“`
$ ruby -v
“`#この記事の目標
ruby on rails で新規アプリケーションを作成し、TOPページまで作成する#1 アプリケーションの新規作成
newコマンドで新規作成
“`
$ rails new アプリケーション名
“`カレントディレクトリを新規作成したアプリケーションフォルダに移動
“`
$ cd アプリケーション名
“`
ブラウザを起動して下記画像が出ていれば新規アプリケーションの作成に成功#2コントローラー作成
トップページ用にコントローラを作成します。
コントロー名は必ず複数形にします。(例 ◯homes ×home)“`
rails g controller