Ruby関連のことを調べてみた2021年12月10日

Ruby関連のことを調べてみた2021年12月10日

【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.0

Only 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日のエントリです。

お声がけありがとうございます。書いてみました。

この記事を見て実際にやってみたら、あまりにも簡単にできてしまいました。

「温度センサーを読み取れないかな?」と思ってやってみたのですがうまくいかず、いろいろやっているうちに以下の記事が公開されました。

[回路図~プログラムまで自作するキーボード \- 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

Rubyのバージョンアップの方法 (Rubyのバージョンを切り替える方法)

↓以下は自分用です。上の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

元記事を表示

OTHERカテゴリの最新記事