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

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

【Rails】carrierwave(キャリアウエーブ)の再生方法 「自動再生」「手動再生

#はじめに
carrierwave(キャリアウエーブ)で保存した動画の再生方法のを紹介します。
今回は「自動再生」と「手動再生」の二種類に着目してます。

前提に、下記の記事の続きになってますので、既にcarrierwaveを導入してるかた向けです。
分量が多かったので「保存」と「再生」で分けております。
よかったら参考にしてみてください。

【Rails】carrierwave(キャリアウエーブ)で動画の投稿(保存)
https://qiita.com/AKI3/items/541ff4d43c20eff190e2

###目次
1. 自動再生
2. 手動再生

#開発環境
ruby 2.6.5
rails 6.0.0

#実装
それでは実装していきます〜

#1. 自動再生
まずは、自動再生の方法です。

####コントローラーの編集
ビューで表示するために`@tops`を定義し、データが格納されるようにします。

“`app/controllers/tops_controller.rb
class TopsController < ApplicationController

元記事を表示

偶数値を取得するeven?メソッド

##even?メソッド
Rubyが元々用意している、対象の数値が偶数かどうかを判断するメソッドです。
対象の要素の値が偶数であれば真を返し、そうでない場合は偽を返します。
[公式リファレンス](https://docs.ruby-lang.org/ja/latest/method/Integer/i/even=3f.html)

今回はeven?メソッドを使用し、以下の配列から偶数の値がいくつあるか数えるメソッドを作ります。
例)
count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0

“`
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end

count_evens([2, 1, 2, 3, 4])
count_evens([2, 2, 0])
count_evens([1,

元記事を表示

strftimeについて

## strftimeとは?
 日時データを指定したフォーマットで文字列に変換することができるメソッド。
 **Timeクラス**と**Dateクラス**、**DateTimeクラス**のオブジェクトを指定したフォームで文字列として取得し表示させることができる。
## 各クラスについて
◯Timeクラス
 日時を扱えるクラス。

“`ruby:ターミナル
# 現在の日時を取得
today = Time.now
=> 2000-01-01 12:00:00 +0000

# 日時を指定して作成
day = Time.new(2000,1,1,12,00,00)
=> 2000-01-01 12:00:00 +0000
“`
◯Dateクラス
 日付を扱えるクラス。rubyで使うためには**require “date”**が必要になる。

“`ruby:ターミナル
require “date”

# 現在の日時を取得
today = Date.today
=> Wed, 01 Jan 2000

# 日時を指定して作成
day = Date.new(2000,1,1)
=> Wed,

元記事を表示

Roman numerals

# Document Link

– [roman numerals](https://qiita.com/daddygongon/items/2d0a73a51ddab2d9da1b)

# Roman numerals

## ローマ数字の基礎知識

ローマ数字って格好いいよね.

ただ,私自身10ちょっとまでしか見たこと無いんですよね.

では,ローマ数字にはどんなのがあるのか.

| arabic | roman |
|——-:|:——|
| 1 | I |
| 5 | V |
| 10 | X |
| 50 | L |
| 100 | C |
| 500 | D |
| 1000 | M |

ローマ数字で扱われる基本的な文字は上記のもので,

2 >> II,8 >> VIII というように表される.

ただ,4と9のときだけ異なり,

4 >> IV, 9 >> IX と表される.(知ってた)

2桁ではどうなるのか?

私は単純なので,

元記事を表示

Railsのformでのselect_box使い方!【初学者向け】

Railsでselect_boxの綺麗な書き方を知りたい!
そんな方必見です

# 前提知識
– RubyとRailsの基礎知識
– form_withの使い方の知識
– MVCの基本的な知識

# 書き方
<%= f.select( プロパティ名, タグの情報, {オプション} ) %>
こんな普通に記述していきます!

プロパティ…カラム名
タグの情報…セレクトボックスに使いたいデータ
オプション…セレクトボックスのオプション(include_blankなどをよく使います)

カラム名はuser_idやmenu_idなどidをとってくることが一般的です!!
タグの情報はoptionタグに使われるデータなので配列かハッシュで指定します!

[[表示名, 送信したいデータ], [表示名, 送信したいデータ]]

オプションは{ include_blank: ‘選択してください’}のように書くことが多いと思います。
このオプションをつけると

![スクリーンショット 2020-12-02 7.27.19.png](https://qiita-image-store.s3.ap

元記事を表示

Mysql2::Error: Unknown table ‘~’: DROP TABLE `~`の対処方法

少し前に起きたエラーで書こうか迷ったのですがまた同じエラーでつまずきたくないので書くことにしました。少しでも参考になれば幸いです。
#エラー内容
今回のエラーは僕の場合RSpecのテストのために`rails db:migrate RAILS_ENV=test`を実行したところMysql2::Error: Unknown table ‘myapp_test.notifications’: DROP TABLE ‘notifications’と出ました。
#確認したこと・試したこと
mysqlでmyapp_testのテーブルを確認したがnotificationsは入っていなかった。myapp_developmentのテーブルにはちゃんとnotificationsが入っていた。
一応rails db:create RAILS_ENV=testをやってみたがすでに作られてるよと言われた。
#対処方法
エラーとなったマイグレーションファイルがあるところを参照する
僕の場合テスト環境だったので、

“`
$ rails db:migrate:status RAI

元記事を表示

30代からのプログラミング勉強 6日目【Udemyコース/Ruby on Rails】

本日は比較的短めのコース視聴を実施。
分からないなりにはなりますが、コースレビューの様なものを書いていきます。

##学習内容

####【3日でできる】はじめての Ruby on Rails 4 入門(Rubyから学べる)

今回はこちらのUdemyコースを視聴。
率直な感想としては「自分にはまだ早かったけど見る価値はあった」です。

1から10まで丁寧に、というよりはwebアプリケーションが出来るまでの流れを簡単な解説を挟みつつ見ていくといった印象でした。

またRuby、Railsの導入についてはターミナルへの入力を真似していけばいいだけなので分かりやすいですが、動画内で解説されているバージョンは最新のものではないので注意が必要かもしれません。

説明は
「○○という記述には××という効果があり、例えばこんな時に使います」
ではなく
「××したいので○○と書きます」
というものが多く完全に知識がない状態だと聞き慣れない単語も多かったので、ある程度勉強した後に見るといいかもしれません。

##所感
はじめての、とはありますが説明少なめでサクサク進んでいく感じの講座なので(フ

元記事を表示

【Ruby on Rails初心者向け】ログインユーザーの最新投稿を取得する方法

本のレビューアプリ作成中、ログインユーザーの最新投稿を取得する方法が複数あったので、それぞれの簡単な使い方と違いについて備忘録としてまとめました。

## 【前提】
– rails_6.0.0_
– mysql2
– gem ‘devise’を使用してログイン機能を実装済み

## 【目的】
– current_userの最新投稿を取得すること
– ビューで最終投稿日時を表示すること

## 【結論】 : current_userに紐づく投稿を配列取得し、「.last」で取り出す

“`contoroller.rb

@last_review = Review.where(user_id: current_user.id).last
“`
whereメソッドでcurrent_userに関連する投稿を取得して、lastメソッドで最後の投稿のみを切り出します。

“`html.erb
<%= @last_review.created_at %>
“`
コントローラーで定義したインスタンス変数@last_reviewに対して、created_atカラムの情報を表示させます。

元記事を表示

配列に対してメソッドを使う時気を付けること(RubyonRails)

私のメモ用ですが、どなたかのヒントになれば幸いです
#概要
配列に対して処理を使う際、ひとつひとつに対して処理を適用しなければならない。
結論はmapメソッドを使えば配列それぞれに処理を適用できます。

#実例
下記の例では配列Arrayに対してメソッドの確認を行おうとしておりますが、当然これでは確認はできません。

“`ruby:例
if Array.respond_to?(:content_type)
# => false
“`

mapメソッドを使えば、配列のひとつひとつに対して処理を行えます。

“`ruby:例
if Array.map {|a| a.respond_to?(:content_type)}
# => true(Arrayにcontent_typeメソッドがあれば)
“`

#まとめ
結論、mapメソッドの使い方の話になりますが、これに気付かず一日ハマってしまいました。
扱っているものが単体なのか配列なのかをしっかり意識すべきだと思いました。

元記事を表示

Rails video_tagで動画の埋め込み

Ruby on Railsで動画を埋め込みたいと思い、`video_tag`を使ったので復習

まず動画を置く場所は`public/videos/動画ファイル`

#ソースコード
“`
<%= video_tag("/videos/record.mp4", autoplay: :true, loop: :true, muted: :true, class: 'video-content') %>
“`

これでうまく読み込めました。

#video_tagのよく使う属性

|属性|意味|
|—|—|
|autoplay|ページの読み込み後自動再生|
|loop| 繰り返し再生|
|controls|コントローラーを表示|
|muted|音を出すかどうか|
|size|動画サイズ(幅*高さ)|

#まとめ
最初は`app/assets/videos/動画ファイル`としてましたが読み込まれず404エラーになってしまいました。
調べてみると、video_tagはpublicフォルダを探しにいくらしいです。

元記事を表示

Railsのパフォーマンス向上

# はじめに
Railsのパフォーマンスの向上に関して、少しまとめます。

いろいろ、誤解や間違いがあるかもしれないので、問題ありましたら指摘していただけると助かります。

# N+1(includes)
N+1は100件のデータを取得する場合に、101回SQLが走る様な場合の問題のことです

例えば、

userモデルとuser_profileモデルが一対一の場合に

“`ruby
@users = User.all

@users.each do |user|
user.user_profile.comment
end
“`

の様にすると

user_profile.commentの取得時に毎回SQLが走ってN+1が走ります。

このN+1の回避方法としては下記の様に`includes`を使うことで回避できます。

“`ruby
@users = User.includes(:user_profile).all

@users.each do |user|
user.user_profile.comment
end
“`

# N+1(select)

inclu

元記事を表示

駆け出し新卒エンジニアによるOSSコードリーディングのすすめ(Ruby編)

[Increments × cyma (Ateam Inc.) Advent Calendar 2020](https://qiita.com/advent-calendar/2020/increments-cyma) の2日目は、株式会社エイチーム EC事業本部の島袋(@shimabee)が担当します。

# はじめに
駆け出し新卒エンジニアがRubyで書かれたOSSコードを読んで行く中で得られたことをまとめました。
OSSコードリーディングの導入としてOpenStructというRubyの標準ライブラリの一部を読むパートもありますので、是非とも最後までお読みください。

# なぜ、OSSコードリーディングを始めたのか
OSSコードリーディングを始めた目的は、コードリーディングスキルの向上です。
コードリーディングスキルはプロのエンジニアには重要なスキルです。なぜなら、自分だけで好き勝手に開発していた学生の頃とは異なり、エンジニアとして働き始めてからは他人の書いたコードを読み解き、その上で実装を考えることが殆どだからです。
このコードリーディングスキルを上達させる方法をを上司や先輩に相

元記事を表示

プッシュ時にRSpec+Rubocopを自動でするようにCircleCIでbuildする【Rails】

#はじめに
Railsでアプリを作っている初学者です。
アプリ内にCircleCIを使った自動テストを入れたい!と思い、導入してみましたので、その時に詰まったことをまとめました。

同じようにアプリにCircleCIを入れたいなと思っている方の参考になれば嬉しいです!!

また、間違い等がありましたらご指摘いただけますと幸いです。

##バージョン
Ruby:2.6.6
Rails:5.2.4
Mysql:5.7
環境構築にDocker使用

##前提
以下は題名のことをしたい場合&CircleCIを理解する上で必要です!

・Dockerを使用したことがある
・Rspecを導入済
・Rubocopを導入済
・Githubアカウントがある

まず、CircleCIの公式入門ガイドをすることをおすすめします!自分は実際の挙動があまりイメージ出来なかったのですが、これでざっくり理解することができました。

CircleCI入門ガイド:https://circleci.com/docs/ja/2.0/getting-started/

そして入門ガイドをしたところで、CircleCI

元記事を表示

Herokuでデプロイしたときにapplication errorの対処法

初投稿です。
間違いがあるかもしれませんがそのときにはご指摘ください。

# 概要
Herokuでデプロイしたあとに本番環境でapplication errorが発生。
ログを見るように書いてあるのでログを確認してみると

“`
heroku[router]: at=error code=H10 desc=”App crashed” method=GET
“`
と書いてある。調べてみるとどうやらアプリがクラッシュしてしまっているらしい。次に

“`
herock run rails c
“`
を行うと最後のところに

“`
/app/app/controllers/application_controller.rb:13: syntax error, unexpected
end-of-input, expecting end (SyntaxError)
“`
とある。どうやらapplication_controllerでendの数が違っていた様子。
修正してアップしたら問題なくいけました。

元記事を表示

【Ruby ~配列~】勉強メモ3

Rubyの復習。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

配列

配列とは、複数の情報を順番にまとめて管理するときに利用するもの。
配列は、[値1, 値2, 値3]のように作成する。
配列に入っているそれぞれの値のことを要素と呼ぶ。
また、配列も1つの値なので、変数に代入することが出来る。

“`.ruby:例
# 変数languagesに、配列を代入
languages = [“日本語”, “英語”, “スペイン語”]

puts languages
“`

“`.text:出力結果
日本語
英語
スペイン語
“`
 

– 配列に値を追加

配列への要素の追加には、`<<`という演算子を使用。 ```.ruby:例 languages = ["日本語", "英語", "スペイン語"] languages << "フランス語" puts languages ``` ```.text:出力結果 日本語 英語 スペイン語 フランス語 ```   - 配列の要素を取得 配列の要素には、前から順に「0, 1, 2, ...」と数字が割り

元記事を表示

【Rails】if文の基本

#基本の基本
@expired_reservations = []および@reservations = []をif文ないに記述し沼にはまりました。改めて考えれば基本の内容ですが、嵌っている間はわからないものです。
戒めのために記事にします。

“`rb
# 本日の日付を基準に予約中、終了した予約を選別
def check_date_time_for_reservation
@dateTime = DateTime.now
@expired_reservations = []
@reservations = []
if user_signed_in?
user_reservations = Reservation.where(user_id: current_user.id).joins(:reservations_info).order(reservation_day: “DESC”)
user_reservations.each do |reservation|
check_reservation_dat

元記事を表示

バリデーション不足によるエラー解決 ~Active Storage を用いた画像投稿機能の実装時発生~

##はじめに
・投稿者は初学者ですので誤った情報を投稿してしまうことがあります。その時はぜひ、遠慮会釈なしにご指摘いただけると幸いです。

##今回のエラーの原因
画像データのバリデーションが欠けていたため、本来であれば画像とセットで投稿しないといけないが、画像がない状態でデータの保存ができてしまっていた。
そのため、画像のないデータを受け取ったビューファイルが混乱し、エラーが起きた。

以下、詳細。

##画像投稿の実装の手順
画像投稿機能を実装しようと`ActiveStorage`を導入した。
そして、以下の手順で準備を進めた。
まずは投稿データと画像データが1対1の関係になるように記した。

“`models/prototype.rb
class Prototype < ApplicationRecord belongs_to :user has_one_attached :image #1対1の関係になる has_many :comments, dependent: :destroy validates :title, :catch_copy, :conc

元記事を表示

ruruby: RustでつくっているRuby

この記事は[言語実装 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/lang_dev)2日目の記事です。前回は[κeenさんの「自作コンパイラをブラウザ上で動かす」](https://keens.github.io/blog/2020/11/30/jisakukonpairawoburauzauedeugokasu/)、次回はmitsuchiさんの「LLVM の Kaleidoscope を育てながら作る」です。

###はじめに

みなさま、ご無沙汰しております。monochromeです。rurubyという名前でRuby処理系のRustによる実装を行っていて、昨年のAdvent Calendarで[Rustでつくる(つくれるかもしれない)Ruby](https://qiita.com/sisshiki1969/items/3d25aa81a376eee2e7c2)という記事を書きました。今回はこの1年間の進捗と、今後の予定などを書いてみます。

レポジトリはこちら。実行にはRustツールチェーン(nightl

元記事を表示

【備忘録】tapについて少し調べてみた。

# 環境
Ruby 2.6
Rails 5.1.7

# 背景
機能実装中、似たような処理を探していたら「tap」を見つけてなんだこれ、と思い調べた。これは初めて遭遇したので備忘録として。

# tapとは
“`ruby:
“foo”.tap {|str| puts str.reverse}
# oof
# => “foo”
“`

メソッドの返り値は変わっておらず小文字のままだけれど、tap自体は動いていて文字列が反対になっている。
調べたところによると、tapはメソッドの中で何かしたいけど、メソッド自体の評価は変えたくない時に使うみたい。

# 実際に見たコード
こんな使い方もある(らしい)。

“`ruby:

User.new.tap do |item|
item.name = “Taro”
item.address = “test@gmail.com”
— 中略 —
item.tel_num = “09012345678”
end.save!

“`
`end`の後にsave!ってなんやねんと思ったけど大分スッキリ書けますね。
ta

元記事を表示

Ruby 基礎知識 #1

プログラミング言語のRubyを学んできたので、アウトプットしていきたいと思います。

##Rubyとは何か?
Rubyとは、Matzことまつもと ゆきひろ氏が作成した1995年に一般公開されたオブジェクト指向スクリプト言語。
スクリプト言語とは、可読性が高く比較的簡単に書きやすい言語の総称(正式な定義は存在しないらしい)。

##Rubyを使用してできること
Rubyは汎用性の高いプログラミング言語となるため、様々なサービスを作ることができる。
「機械学習」と「スマートフォンアプリ制作」は唯一、Rubyが向いていない分野。
使用しているサービスの具体例 : **クックパッド・Hulu・Twitter**

##Rubyを使用するには
+ 一般的に、自分のPCで開発をする環境のことを**ローカル環境**、開発する環境を用意することを**環境構築**と呼ぶ。
ローカル環境を構築することで、自分のPCさえあればいつでもどこでもRubyのコードを書き、自分の好きなプログラムを開発することが可能。

+ 開発に必要なツールは、**「テキストエディタ」**と**「ターミナル」**の2つを用意する。

元記事を表示

OTHERカテゴリの最新記事