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

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

モデルの複数名定義を行うNameError (uninitialized constant User::Reserf):

##環境
MacBook Air2020
Ruby2.7.1
Rails6.0.3.4
MySQL

##はじめに
reserveモデルの複数形定義が、自動でreserfになる模様
エラーメッセージにて発覚しました。

“`
NameError (uninitialized constant User::Reserf):
“`
##解決法
以下のように、複数形を定義することで解決できました。

“`config/initializers/inflections.rb
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular “reserve”, “reserves”
end
“`

元記事を表示

【実装手順】パンくずリストの設定(Rails/gretel)

gretelを使ってパンくずリストを実装する手順を学んだのでアウトプット。
gretelのgithubは[こちら](https://github.com/lassebunk/gretel)

#作業環境
・Mac
・ruby 2.6.5
・rails 5.2.3

#パンくずリストとは
ユーザーが今WEBサイト内のどの位置にいるのかを視覚的に分かりやすくするため、上位の階層となるWEBページを階層順にリストアップしてリンクを設置したリストのことを指します。

↓こんな感じです。
![スクリーンショット 2020-11-03 8.40.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823516/c6cfbafc-ae58-92f4-d0af-38f797bd1b81.png)

###パンくずリストを設定するメリット
・ユーザーがどのページを読んでいるのかが瞬時に分かる。
・[クローラー](https://cluster-seo.com/blog/crawler.html)巡回を手助けする。
・S

元記事を表示

Railsとsimple calendarを使って予約システムを実装!datetimeにバリデーションをつけよう!

# 実装したい内容
gemのsimple calendarを使ってカレンダーに予約の予定を入れていく
rubyやRailsの基礎知識があること前提で話を進めていきます

# 開発環境
Rails 6.0.3
ruby 2.7.0

# reservationsテーブルの追加
今回はミニアプリを作る想定をしreservationsテーブルを作成しname(string)とstart_time(datetime型)のカラムを追加していきます。

“`
rails new calendar_app
“`
まずはお決まりのrails new

“`
bundle
“`
bundle installも癖づけて行いましょう。

“`ruby:Gemfile
gem ‘simple_calendar’, ‘~> 2.0’
“`
“`
bundle
“`
gemfileにsimple_calendarを追加したら再びbundle install

“`
rails g scaffold reservationc name start_time:datetime
“`
今回はスキャフ

元記事を表示

Ruby足し算

#ruby足し算
#入力される値
* a
* b

#期待する出力
* aとbを足した数を出力

#入力例
* 1 1  (1と1です)

#出力例
* 2

“`java:パターン1
a = gets.to_i
b = gets.to_i
puts a + b
“`
“`java:パターン2
a = gets.to_i
b = gets.to_i
num = a + b
puts num
“`
“`java:パターン3
a = gets
b = gets
puts a + b
“`
“`java:パターン4
a = gets
b = gets
puts (a + b).to_i
“`
“`java:パターン5
a = gets.to_s
b = gets.to_s
puts a + b
“`
# パターンといえるほど大した事はしてないが、なんせただの「1+1」ができない。おそらくpai○a独特なルールで縛りを受けてるからテストが通らないんですね〜、、本日はここに4時間ほど時間をかけて収穫は0でした。無念

#追記
“`java:これでできました
s = gets

元記事を表示

whereメソッドで条件を付け複数のレコードを取得する

fruitsテーブルのうち、nameカラムが「りんご」もしくは「ぶどう」のレコードを全て取得したいとする。

“`
Fruit.where(name:’りんご’).or(Fruit.where(name:’ぶどう’))
“`

取得できました。

元記事を表示

Qiita初投稿

○自己紹介

– 2017年に高専本科卒業 ⇨ 就職のため上京
– メカトロニクスエンジニアとして社会人生活をスタート
– 機械工学のオワコンっぷりに失望し,好奇心で業務外の勉強を開始
– 本業に全く役に立たないScienceの勉強がいつのまにか”趣味”になる
– “仕事でいかせる環境に転職したい”&”この面白さになぜもっと早く気づかなかったのか?” と,教育に対して圧倒的後悔する
– 2020年にWeb言語にを学習し,自分の探していた庭を見つける
– 未経験Web系バックエンドPGとしてのキャリアをリスタートするためにポートフォリオ作成開始(現在)

○Qiita投稿の目的について

– 学習した内容のメモ
– 学習の記録

○今後の投稿について

– Ruby on Rails の学習内容 (書籍,Udemyの内容まとめ)
– ポートフォリを作成過程

元記事を表示

hamlでaudio_tagを使ってmp3再生をする手順

## はじめに

hamlを使って音声を再生することができるサイトを作りたかったのですが、HTMLの記事しか見つかりませんでした。実装するにあたりコードの記述で苦労したので備忘録として記事にしました。

HTML5には音声を再生するためのaudio_tagというタグがあります。これを利用することでmp3、wavなどの拡張子の音声を再生できるプレーヤーを設置できます。

今回はmp3でやっていきます。
Railsのバージョンは5.2.3を使っています。

## 音源の用意

まず最初に再生させたいmp3音源を用意します。私の場合は利用したい音源がmp3ではなかったので、こちらのサイトで拡張子を変更しました。
https://online-audio-converter.com/ja/

## 音源をディレクトリに入れる

次にフォルダーを作成します。

app/assets/audios

audiosフォルダーの中にmp3音源を入れていきます。
私はFinderで音声ファイルの移動をしました。

今回はサンプル音源として「sample.mp3」というmp3を用意しました。
![スクリ

元記事を表示

ruby nokogiriでスクレイピング

# はじめに

ruby初心者、スクレイピング勉強メモ。

“`
MacOS 10.15.7

$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]

$ nokogiri -v
# Nokogiri (1.10.10)
“`

### 参考になったページ

– [スクレイピングのためのNokogiri利用メモ](http://otn.hatenablog.jp/entry/20090509/p1)
– [クローラ作成に必須!XPATHの記法まとめ](https://qiita.com/rllllho/items/cb1187cec0fb17fc650a)
– [Ruby + Nokogiriでスクレイピング](https://qiita.com/kumamonmaster/items/9bb2aadde56c956fdc9f)

# 目標

qiitaのrubyの記事のタイトルをcsv形式で保存する。

### 流れ

1. htmlと文字コードを取得
2. 必要な部分だけゲット

###

元記事を表示

変数

#同じ値を何度も使おう

これまで値を使うたびに、同じ値であっても毎回記述していましたと思います。

しかし、毎回同じ値を書くのはめんどうですよね。
例えば、円の面積の計算を行うプログラムを作成する場合、毎回円周率の値を書くのは非常に大変な作業です。

“`java:【例】同じ値を毎回記述する
# 半径3の円の面積
3 * 3 * 3.14159

# 半径10の円の面積
10 * 10 * 3.14159

# 半径11の円の面積
11 * 11 * 3.14159
“`
もし円周率を3.14159ではなく3.14へ変更することになったら、記述をすべて書き換える必要があります。

この問題を解決するのが**変数**という仕組みです。

#変数
**変数とは、値を入れる箱のようなものです。この箱には名前をつけることができ、どんな値が入っているのかを簡単に識別できるようになります。この名前を変数名と言います。**

変数を利用することで、値を再利用したい場合に、変数の名前を使うだけで呼び出すことができます。

変数の使い方について、順に説明します。

#変数の宣言と定義
**変数

元記事を表示

【Rails/ルーティング】Prefix, URIを好みの値に設定する方法とresourcesについて深ぼる

# 概要
Railsでルーティングを設定する際は「とりあえずresources脳」な僕ですが、今日はふと「自分でURLとか設定したいよな…」と思いました。
今回はそんな思いを叶えるべく、調べた内容をまとめます。
(resourcesの名前の起源も下の方で深ぼってみました!)

# 環境

* macOS Catalina 10.15.6

* ruby 2.6.5

* Rails 6.0.3.4

* MySQL : 5.6.47

* Bootstrap : 4.3.1

# 結論

「Railsガイド : Railsのルーティング」によると、
例えば「マイページ(users#show)」へのリクエストを次のように表現したいとき。

* prefix : users_profile

* URI : ‘/users/:id/profile’

“routes.rb“に以下のように記載します。

“`app/config/routes.rb
Rails.a

元記事を表示

ちょ、Catalina、おま・・・(ry pumaが入らない編

プロジェクトがコンテナ化されたのでローカルに環境を作る必要がでてきまして。
Rubyの静的解析ツールとしてrubocopを利用していたので、実行しようとしてみました。

環境: MacBookPro MacOS(10.15.7)

“`bash
bundle exec rubocop
-bash: /usr/local/bin/bundle: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory
“`

げっ、動かん。
ruby2.3なんてもう使っとらんばい。これbundleをアップデートせなやん。

“`bash
sudo gem update bundler
Updating installed gems
Updating bundler
Fetching bundler-2.1.4.gem
Successfully installed bundler-2.1.4
Parsing documentation

元記事を表示

【Rails】UC時刻表示を日本時刻表示に変換する方法

#時刻表記変更の手順

– gem ‘rails-i18n’をインストール
– config/application.rbへ記述の追加
– config/locales配下にファイル作成、記述

#gem ‘rails-i18n’をインストール
`Gemfile`に以下のGemを追加します。(本番環境でも開発環境でも使いますので、一番下に記述しましょう)

“`:Gemfile
gem ‘rails-i18n’
“`

ターミナル

“`
bundle install
“`

※このときサーバーを立ち上げ直すのを忘れないようにしましょう。

#config/application.rbへ記述の追加
`config/application.rb`を開いて、追加と書かれている二行を追加します。

“`Ruby
module アプリケーション名
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails versio

元記事を表示

ノート等の情報を基にしたビジネス書や実用書などのランキングサイトを作りました

# はじめに

ノートの投稿記事からリンクされているAmazonの商品を集計してランキングサイトを作りました。技術書のランキングはQiitaを元にした[テック・ブック・ランク](https://www.techbookrank.com/)がありますが、私はビジネス書や実用書を読みたいため、ノートにだったらそういう情報ありそうだなと思ったので。

[Note Station | 人気のビジネス書や実用書、技術書をランキング形式で毎日更新](https://note-station.com/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/844004/d2457b10-0b85-cef2-6a50-1583a041d650.png)

元々個人用に作って、書籍購入の参考にしたり、ランキング処理の勉強として作ったのですが、思ったよりも便利なのではと思い公開する事にしました。

書籍のカテゴリはたくさんあるので、2階層目までのカテゴリ情報でフィルタできるようになっています。Amazon

元記事を表示

Ruby on Rails モデル内の処理をコンソールだけでデバックする方法

こんにちは
今日書くのは主に初心者向けです。
今回はあるデバックの方法を紹介します。そのデバックは’byebug’です。これはbinding.pryみたいなgemは必要とせず、viewが必要としないところは魅力であります。モデルやコントローラーの処理の中にbyebugを書くだけでデバックすることができます。ただしviewに書いてもデバックはできません。

“`ruby:scraping.rb
class Scraping < ApplicationRecord def self.get_infomation require 'mechanize' agent = Mechanize.new links = [] current_page = agent.get("https://talent-dictionary.com/s/jobs/3/20") elements = current_page.at('.home_talent_list_wrapper') boxs = ele

元記事を表示

Ruby irbで日本語入力する / irb(main):001:0> ‘\U+FFE3\U+FFE3\U+FFE3\U+FFAB

# irbとは
今回は、[プロを目指す人のためのRuby入門](https://ruby-book.jnito.com/)の1章で出てきた
irbで日本語入力できるようにする工程に少してこずったので備忘録として残しておきます。

irbを使えば対話的にプログラミングを実行できます。
テキストエディタに書き込み、それをターミナルで実行する、という手順をしなくても
irb上でテキストエディタと同じ内容を書き込むだけで、手軽にRubyの動作を確認できます。

![スクリーンショット 2020-11-02 15.56.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664818/4f469988-8099-d309-4c35-304d19e6282b.png)

(図:irbでの動作確認)

#irbで日本語入力できない場合

irbを起動し、日本語入力をしてみてください。

“`ruby:terminal
irb(main):001:0> ‘\U+FFE3\U+FFE3\U+FFE3\U+FFAB

元記事を表示

Ruby の sum は地味にすごい話

# はじめに
速い速いと評判の`sum`が本当に速かった話
# 今回のお題
*[AtCoder Beginner Contest B – Trapezoid Sum](https://atcoder.jp/contests/abc181/tasks/abc181_b)*
Difficulty: 27

今回のテーマ、等差数列の和

題意としては、普通に加算すると`TLE`するので、等差数列の和の公式

“`math
S=n(a+b)/2
“`
を使いましょうというもの。
# inject(TLE)
“`ruby.rb
n = gets.to_i
sum = 0
n.times do
a, b = gets.split.map(&:to_i)
sum += (a..b).inject(:+)
end
puts sum
“`
見事に`TLE`
# sum(AC)
“`ruby.rb
n = gets.to_i
sum = 0
n.times do
a, b = gets.split.map(&:to_i)
sum

元記事を表示

【ざっくり解説】pluckメソッドと結婚したい

突然ですが…

①あなたの身近にいる「とてつもなく仕事ができる同僚」を思い浮かべてください。
②あなたの「奥様」。あるいは「理想的な女性(男性)」を思い浮かべてください。

その二人をmergeしたようなメソッド。とてつもなく仕事ができて、なおかつ朗らかで柔らかい。それこそが今回ご紹介する「pluck(プラック)メソッド」なのです。

(…すみません真面目にやります)

## 概要
この記事は、

1.pluckとはどのようなメソッドなのか
2.pluckはどのような場面で使えるのか

について解説を行うものです。
(※すでにpluckメソッドを使いこなしている方にとっては、この記事は無益です。)

## pluckとはどのようなメソッドなのか

結論、__「あるカラムの値を配列で取得する」__メソッドです。

テーブルを例に解説します。

### usersテーブル( id, name, age )

| id | name | age |
|:—-:|:———:|:—–:|
| 1 | ken | 21 |
|

元記事を表示

式展開について。

#式展開
**式展開は、文字列の中に式を入れることができる機能です。**

**式展開の書き方は文字列中で#{式}とするだけです。**

**式展開をする場合は、文字列を作るときにダブルクォーテーション”
で囲む必要があります。**
**シングルクォーテーション’で囲んだ場合は式展開が行われません。**

#irbで以下のコードを実行してみましょう

式展開を試してみましょう。

“`java:irb
# 式展開で文字列に式を含む
irb(main):001:0> “今日で#{20}歳になりました”
=> “今日で20歳になりました”

# シングルクォーテーションだと式展開されない
irb(main):002:0> ‘今日で#{20}歳になりました’
=> “今日で\#{20}歳になりました”
“`

#まとめ

**式とは、Rubyにおいて「文字列」や「数値」、「変数」、「演算子式」などのこと。
式展開とは、文字列の中に式を入れる

元記事を表示

【Rails】間違ってローカル環境で本番環境のbundle installをしてしまった時の対策

【Rails】間違ってローカル環境で本番環境の bundle install をして訳分からなくなった時に行なった対策

## はじめに
趣味アプリの開発で、Rails で API を作っていた際、久々にローカルと本番を間違って bundle install をかけました。
ローカルで`bundle install –path vendor/bundle –without test development`を走らせたということです。。。
その時にうまいこと復活できた(多分)ので、まとめました。

## 起こったこと
よく分からないエラーがたくさん出て、`rails s`など様々なことができなくなる。

## 対策

### .vendor/bundle の削除
上記のコマンドを実行すると、おそらくアプリケーション直下に bundle のディレクトリが出来上がっていると思います。怖いと思いますが、まずはそれを丸ごと削除してください。

### Gemfile.lock を書き換える
その状態で`rails s`などを実行すると、先ほどとエラー内容は変わりますが、本番環境で入れようとし

元記事を表示

【Rails】Simple Calendarのミニアプリをカスタマイズ仕様で作ってみた

#はじめに
自分のアプリにカレンダーが欲しかったので、Simple Calendarのミニアプリをカスタマイズできるように作ってみました。
以前、「FullCalendar」を作ったのですが、欲しい機能をプラグインできそうになかったので、細かな実装ができる「Simple Calendar」も作ってみたいと思います。

#完成図
![スクリーンショット 2020-10-29 17.57.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/769854/aa6b4b3c-82f2-ebec-9a94-bda05bd4c34f.png)

###目次
1. 新規アプリケーション作成
2. simple_calendarの導入
3. カレンダー機能の雛形作成
4. カレンダーの表示と「イベント追加」機能の実装
5. 見た目を整える

#対象者
カレンダーを導入したい方
MVCを実装できる方

#開発環境
ruby 2.6.5
rails 6.0.0
データベース mysql2 0.4.4
simple

元記事を表示

OTHERカテゴリの最新記事