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

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

(2021年)Ruby on Rails 管理者(admin)ログイン作成

###前提条件
* deviseでcosutomerログインできること

“`:ターミナル
$ rails g devise Admin
$ rails db:migrate
“`
adminでログインするユーザー作成する。

“`ruby:db/seeds.rb
Admin.create!(
email: ‘admin@admin’,
password: ‘testtest’
)
“`

“`:ターミナル
$ rails db:seed
“`

adminのユーザーデータが入っているか確認する。

“`:ターミナル
$ rails c
$ irb(main):001:0> Admin.all
$ irb(main):002:0> exit
“`
次はviewとcontrollerの作成します。

“`:ターミナル
$ rails g devise:views admins
$ rails g devise:controllers admins
“`

ルーティングを編集をします。

“`ruby:config/routes.rb
devise_for

元記事を表示

Rails がオワコンwww

# はじめに
※ この文章はベータ版です。

Yahoo!知恵袋にあった間違いだらけのベストアンサーがあまりにも…だった
ので書いています。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10236599945

#このベストアンサーの問題点

著者が、よく知りもしない情報について、きちんと調べもせず、以前、聞き齧ったorどこかで
読んだような気がする、うろ覚えの情報をベースに回答しているようにしか見えない。

自分がうろ覚えの情報で回答することで、ネット上に誤情報をばら撒く可能性を考えていない
時点で、自分はこの著者が技術屋or技術屋を目指す人間ならアウトと評価します。

(この著者、「はず」「と思う」を多用することで、うろ覚えの情報で回答していますよアピールを
している気が、、、うろ覚えの情報で回答していることに何ら問題を感じていないようにみえます、
自分のうろ覚えの情報が間違っていた時のための予防線を張っているようにも。。。

「はず」「と思う」が多用されていても、質問者や読者が正しい情報と誤認識する可能性

元記事を表示

M1のmacに変えたらbundle installできなくなった件

先日、M1のmacbook proが届いて「さぁこれでairにイライラする生活ともおさらばだ!」とウキウキで環境構築していたらbundle installの段階で謎のerrorが出て余計にイライラすることになりました。

「新年早々…」と思いつつ色々調べた結果、なんと解決できたのでメモ程度に共有させていただきます。
#エラーについて
※すぐにエラー内容が開けなかったため概要だけにさせてください。覚えていたら追記します。

エラーで詰まるまで以下の手順を踏みました。
・githubからrailsプロジェクトをローカルにclone
・bundle install
そして、エラーを起こしたgemは私が確認した限りでは以下のものでした。

– ffi
– sassc

#解決方法
私の環境では以下の手順で解決しました。

Finder>アプリケーション>ターミナル(右クリック)>情報を見る>「Rosettaを使用して開く」にチェック

#まとめ
これは他の調べものをしていた際にたまたま見つけた解決方法でした。
一応、以下に本件に関連のありそうなappleのサポートページを

元記事を表示

migrate出来なかった時のお話

# 凡ミスでmigrate出来なかった時のお話

>1. [rails g modelコマンド](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#rails-g-model%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)

>2. [rails db:migrateコマンド](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#rails-dbmigrate%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)

>3. [本題のerror発生](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#migration%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)

>4. [仮設・検証](https://qiita.com/iamu_TECH_CAMP/i

元記事を表示

Rspecコマンドが面倒だからRakeコマンド一発でRspecが実行できるようにしてみました

## 元々の状況・課題
Rubyで[チケット料金モデリング](https://github.com/j5ik2o/ticket-price-modeling)に挑戦中。
Rspecでテストを書いているが、ターミナルに毎回Rspecコマンドを入力するのが面倒になった。

## 目的
Rspecを簡単に実行したい。

## やったこと・結果
①[Rake](https://docs.ruby-lang.org/ja/latest/library/rake.html)というライブラリを使った。
②ターミナルにrakeコマンドを入力するだけで、全てのspecファイルが一括で実行できるようになった。
③楽になりました。

## Rakeとは(ざっくり)
Rakefileに実行したいことを書いて、Rakefileに書いた内容をrakeコマンドで簡単に実行できる。
ターミナルに長々とコマンドを打たなくても良くなる。

## ディレクトリ構成は、ざっくりですがこんな感じです。
“`
├── lib
│ ├── user.rb
│ └── ticket.rb

├── spec
│ ├─

元記事を表示

Heroku + CarrierWave + S3で画像投稿する方法

## 1. 作業の流れ

まず最初にS3のバケットを作成します。
最初に行う理由は後からローカルで開発しているRailsのアプリケーションにS3で決めた設定を
入力するからです。

S3のバケットの作り方ですが、参考資料をみて行うと問題なく進みます。

流れとしては、

1. まず`IAM`でユーザーを作成する。(ここで作成したアクセスキーIDとシークレットアクセスキーをcarrierwaveの設定で使用する。)
2. S3のバケットを作成する。(画像を保存する箱を作る)
3. gemの`fog-aws`を導入して設定ファイルなどを作成する。

の様に進んでいきます。

## 1. IAMユーザーの作成
まずAWSにアカウント登録すると`root`というめちゃくちゃ強い権限を持ったアカウントが作成される。
公式ではセキュリティ上の観点から`root`ユーザーを日常的に使用するのは推奨していないので`IAM`というサービスを使用して、別の権限のユーザーを日常使い様に作成します。

つまり、自分のAWSアカウントだとしてももう一人権限が小さいユーザーを作って管理するイメージです。※作

元記事を表示

mp3のタグ(ID3v1)をRubyで読み込む(ライブラリ不使用)

# ソースコード

“`ruby:mp3tagID3V1read.rb

#!/usr/bin/ruby

if ARGV.size() == 0 then
print “need an argument.”
else
if File.exist?(ARGV[0]) then
stat = File.stat(ARGV[0])
a = File.binread(ARGV[0], 128, stat.size-128)

if (a[0..2]==”TAG”) then
title = a[ 3..32].force_encoding(“Shift_JIS”).rstrip
artist = a[33..62].force_encoding(“Shift_JIS”).rstrip
album = a[63..92].force_encoding(“Shift_JIS”).rstrip
yearStr = a[93..96].rstrip
trackMark = a[125]

元記事を表示

【Ruby】each_with_indexなどの添字付きの繰り返し処理を初心者向け解説!

皆さん添字付きの繰り返し処理はご存知でしょうか?

添字付きの繰り返し処理とは、each_with_indexメソッドやwith_indexメソッドのことです。

これらを使うことで、人間にわかりやすく配列を表現したりするなど、情報の使い方にレパートリーが増えるので、是非理解してみてください!

## each_with_indexを解説!

each_with_indexとは、配列の要素に添字をいれることのできるメソッドです。

とは言っても、これだとわかりにくいので、コードを確認してみましょう。

“`ruby
fruits = [‘orange’, ‘apple’, ‘melon’]

# 下のブロックの引数のiには0,1,2…と要素の添字が入る

fruits.each_with_index {|fruit, i| puts “#{i}: #{fruits}”}

#=> 0: apple
# 1: orange
# 2: melon
“`

まず、fruitsという変数に配列を渡します。

そして、fruitsにeach_with_indexメソッドを使用し

元記事を表示

Kaminariを使用した非同期ページネーションの作り方

## この記事で説明する事

1. SJRを使用して非同期ページネーション実装する。
2. ページネーション自体はgemの`kaminari`を使用する。

## 簡単にアプリの作りを説明

インスタのクローンアプリで、ユーザーがいて、画像を投稿する事が出来る様な仕組みになっています。
`user has many posts`の形になっていて、今回はPostsに対してページネーションを付け様と思います。参考までにテーブル構成乗っけてます。

`usersテーブル`

“`ruby
create_table “users”, options: “ENGINE=InnoDB DEFAULT CHARSET=utf8”, force: :cascade do |t|
t.string “email”, null: false
t.string “crypted_password”
t.string “salt”
t.datetime “created_at”, null: false
t.datetime “updated_at”, null

元記事を表示

[Rails]検索機能を実装する

# はじめに

今回は検索フォームを実装です。

今回は記事のタイトルを検索すると指定したキーワードで記事を検索することができるというものを実装していきます。:running::dash:

# 実装

## routes

今回は「collection」を使用しますが
データを特定したい場合は「member」を使用します。
「member」を使用するとルーティングに「id」がつきます。

このように記述されています。↓

>またそのアクションを動かすときにparamsで「:id」を受け取りたい場合はmemberを使用し、
特にidを指定して特定のページにいく必要がない場合は、collectionを使用してアクションを追加する。

[Rails関連のことを調べてみた:routes.rbのcollectionとmemberについて詳しく学習](https://miofactor.com/2020/06/10/post-5545/#outline__3_0_5)

そしてその他参考にしたのがこちらです。

[Railsのルーティングを学ぼう②](https://diveint

元記事を表示

入社して約3ヶ月半、レビュー頂いた事を糧にするためのアウトプット記事

#なぜ書くのか
TECH::CAMPを卒業し、プロのエンジニアの方々のもとで、働き始め、3ヶ月半…
先輩方のリソースを、多く割いてしまったと痛感している事、No,1は、そう、**コードレビュー**。

多くのリソースを割いていただいているからこそ、必ず学びに + 誰かの役に立てたらと思い、この記事を書きます。

言語はRuby on Railsです。

#その1 命名はきっちりつける
まず基本中の基本ですが、意外に最初はできない変数やメソッド名などの命名についてです。
これは、変更を加える際や、他の人がコードを読んだときの可読性に大いに影響します。(僕は英語読めないので恩恵は受けにくいですが)

以下のコードを見てください。

“`ruby
a = “strawberry”
b = 100
“`

極端な例ですが、この変数をどこがで使用する際にこんな変数名だと、何が入ってるのか全く推測できず、コードを読む際のストレスが大きくなります。
当たり前ですが、明示的に変数の内容がわかる、命名を心がけるべきです。

“`ruby
product_name = “strawberry”

元記事を表示

railsでテスト実行

>引用先
>[Railsチュートリアル](https://railstutorial.jp/)

#テストとは

言葉そのまんまで機能が正しく実装されたことを確認することです。
テストを書けばいざというときのセーフティネットにもなり、それ自体がアプリケーションのソースコードの「実行可能なドキュメント」にもなります。
テストが揃っていれば、バグを追うために余分な時間を使わずに済むため、正しく行えばむしろテストがないときよりも確実に開発速度がアップします。

#テストのメリット
1.機能停止に陥るような回帰バグを防止できる。
2.コードを安全にリファクタリング(改善)できる。
3.テストコードは、アプリケーションコードから見ればクライアントとして動作するので、アプリケーションの設計やシステムの他の部分とのインターフェイスを決めるときにも役に立つ。

#テストの実行
ターミナルにてrails generate controllerを実行した時点でテストファイルが作成されている。

“`:ターミナル
# 例
$ rails generate controller StaticPages ho

元記事を表示

[PostgreSQL] Railsアプリを削除するなら、先にデータベースを削除する!

##はじめに
学習中にサンプルアプリを作っては消すを繰り返していると、
ふと「フォルダ削除するだけでいいの?」と疑問に感じました。

調べてみると、、
**フォルダ**を削除する前に、**DB(データベース)**を削除しなければいけないらしいです!
以下、2通りの方法をメモしておきます。

– **DB削除 → アプリフォルダ削除**
– **アプリフォルダを削除してしまった後のDB削除方法**

##環境
– macOS Catalina
– Ruby 2.7.2
– Rails 6.0.3
– PostgreSQL 13.1

#① DB削除 → アプリフォルダ削除
該当アプリのフォルダ内で

“`
$ rails db:drop
“`
親ディレクトリに移動して

“`
$ rm -rf アプリ名
“`

必ず上記①の手順で削除するのが良さそうです。
ここからは、もしもアプリフォルダを先に削除してしまった場合の方法です。

#② アプリフォルダを削除してしまった後のDB削除方法
“`
$ psql -l (DB名を一覧表示
“`

“`
#実行結果(sam

元記事を表示

【Ruby on Rails】yarn install –check-files

## 導入
Rails環境で、node_moduleをインストールしたら発生したエラー。

“`shell
========================================
Your Yarn packages are out of date!
Please run `yarn install –check-files` to update.
========================================

To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).

yarn check v1.22.5
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
“`

## 解決方法
このエラーは、package.jsonにあるパ

元記事を表示

gemのransackで複数カラムを検索対象にする方法

##始めに
僕自身複数カラムを検索対象にするのは難しいと思っていたのですが、思っていたより簡単にできたので是非参考にしてもらえたらなと思い、書くことにしました。

##前提
僕はPostモデルのtitleとdescriptionを検索対象にやっていきます。

“`ruby
class CreatePosts < ActiveRecord::Migration[5.2] def change create_table :posts do |t| t.string :title  ⬅️⬅️⬅️⬅️⬅️⬅️これ t.integer :recommended     t.text :description ⬅️⬅️⬅️⬅️これ t.references :user, foreign_key: true t.timestamps end add_index :posts, [:user_id, :created_at] end end ``` ##やり方 始めにviewの一部を変えていきます。 ti

元記事を表示

クラスとインスタンス

#クラスとは?
設計図や料理のレシピのような物です。新しい物を作るのにその度に一から作るのは手間と時間がかかります。
それを避けるために、共通のルールを守った上で個別のデータを作ることが出来るようにする物です。
クラスは共通の処理と属性を決めるだけで、単体でデータを扱うことはできません。

“`
class クラス名
# 変数やメソッドの定義
end
“`

今回はジャムを作るJamクラスを定義して見ましょう。

“`
class Jam

end
“`

##インスタンスとは
実際に作られる『もの』のことです。
クラスを定義しましたがクラスだけでは何のデータも持ちません。
データを持つインスタンスをクラスから生成します。
クラスは定義しなくてもnewというメソッドを始めから持っていてこれを実行することで
データを持つインスタンスが生成されます。

インスタンスを生成したあとからデータを追加したり、メソッドを実行できるようにするために
変数に代入して作ります。

“`
変数名 = クラス名.new
“`

実際にインスタンスを生成してみると

“`
class Jam

元記事を表示

fizz_buzz問題で使用された表現

# 前回投稿したfizz_buzz問題
記述を見ていると基礎的な表現が多い様に感じたので、
実際に使われたいた表現に関して整理してみる。

実際の[fizz_buzz問題解説](https://qiita.com/iamu_TECH_CAMP/items/8253c8b123c20b8343c6)はこちらから

“`ruby:fizz_buzz問題
def fizz_buzz
num = 1
while (num <= 100) do if num % 15 == 0 puts "FizzBuzz" elsif (num % 3) == 0 puts "Fizz" elsif (num % 5) == 0 puts "Buzz" else puts num end num = num + 1 end end fizz_buzz ``` ## 代入演算子 ```ruby:代入演算子 num = 1 # 変数名 = 格納する値 ``` - 上記の記述による作用 - `代入

元記事を表示

【Rubyトリビア】elsif の条件式は省略可能!?

Rubyのif文ではelsifを使って複数の条件を書くことができます。

“`ruby
def greet_to(name)
if name == ‘Alice’
puts ‘Hi, Alice!’
elsif name == ‘Bob’
puts ‘Hi, Bob!’
end
end

greet_to(‘Alice’)
#=> Hi, Alice!

greet_to(‘Bob’)
#=> Hi, Bob!
“`

それでは次のようにelsifの条件式を無くすとどうなるでしょうか?

“`diff
def greet_to(name)
if name == ‘Alice’
puts ‘Hi, Alice!’
– elsif name == ‘Bob’
+ elsif
puts ‘Hi, Bob!’
end
end
“`

答えはこうです。(あれ、さっきと同じ!?)

“`ruby
greet_to(‘Alice’)
#=> Hi, Alice!

greet_to(‘Bob’)
#=> Hi, Bob!

元記事を表示

Rubyでハッシュをうまく使って注文の合計金額を計算する

この記事ではmacOSにインストールしたRuby2.6.3を使っています。

ゼロからわかるRuby超入門の練習問題(p176)を自分なりの解き方をしたのでメモします。
キーはシンボルで書くものだという思い込みがあったので、最初この方法での解き方ができませんでした。ハッシュの使い所を見極める力が必要だと感じました。

問:メニューは、コーヒー300円とカフェラテ400円の2つがあり、サイズはショートだと+0円、トールだと+50円、ベンティだと+100円になる。メソッドを使って注文をとってください。

“`ruby:ターミナルから注文がとれるバージョン
def price
puts “ご注文は何にしますか?”
item = gets.chomp
puts “サイズは何にしますか?”
size = gets.chomp
items = {“コーヒー” => 300, “カフェラテ” => 400}
sizes = {“ショート” => 0, “トール” => 50, “ベンティ” => 100}
total = items[item] + sizes[size

元記事を表示

Railsで個人開発してたら、Railsがめっちゃ叩かれて辛みだった話

こんにちは、だむはです。

去年の12月に個人開発している「sister」というサービスをリリースしたのですが、開発中にRails叩きがおこり、辛みだったので、その時のことをかこうと思います。ちなみに、サービスはまだベータ版です。

##「sister」ってどんなサービス?
「sister」は一言で言うと、IT業界に特化した女性向けのキャリア/スキルシェアサービスです。MENTAから多大なる影響を受けています。MENTAは「師弟関係」、sisterは上下関係をもたない「姉妹関係」と言う部分でシスターフット大切にしていこう!って感じです。

興味があったらみてってください。
[あなたのsisterを探そう](https://sisterwith.com)

##環境

sisterの開発はこんな感じです。

・Ruby
・Rails
・Stripe
・AWS S3
・Heroku
ちなみにローカルはDockerです。

はい、フロントエンドにモダンな技術も使ってないし、インフラもAWS使ってないです

##なぜこの環境なの?

それは、純粋に私一番使える言語がRailsだったからです!

元記事を表示

OTHERカテゴリの最新記事