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

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

【注意点まとめ】Ruby 時間(Time型/Date型/DateTime型)をカラムに設定する

# Time型・Date型・DateTime型
### Time型
– UNIXタイムで日時を扱うクラス

“`
irb(main):001:0> Time.now
=> 2021-01-02 01:41:25.0792755 +0000
“`

### Date型
– 日付を扱うクラス

“`
irb(main):004:0> Date.today
=> Sat, 02 Jan 2021
“`

### DateTime型
– 日付と時刻を扱うクラス
– Dateのサブクラスなので、Dateのメソッドが使える

“`
irb(main):003:0> DateTime.now
=> Sat, 02 Jan 2021 01:41:40 +0000
“`

# validation
– いつも通りのやり方(integer型やstring型と同じやり方)が通用しない。
– エラー文を追加するメソッドを独自に定義し、validationとする必要がある。

“`ruby

validate :day_after_today

def day_after_today
e

元記事を表示

Ruby Silver試験を受験する方の参考メモ(2020年12月28日受験)

Ruby Silver試験に合格しました。

勉強の進め方で反省点があり、わりと直前に詰め込むような形になってしまったので、ちょっと苦労しました:sweat_smile:

ここを訪れた方が私と同じ轍を踏まないように、このメモを残します。

#Ruby Silver試験詳細

|項目 |内容 |
|—|—|
|試験時間 |90分 |
|問題数 |50問(選択式) |
|合格ライン |75% |

参考までに、私の学習期間は1カ月。

学習時間は家で30時間程度、通勤時に電車で毎日20~30分程度。

ちなみに業務では1本、約1週間で組んだことがある程度の初心者です。

点数は「82点」でした。

#使った教材

* [改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応)Ruby公式資格教科書
下記の計80問が収録されています。
基礎力確認問題:30問
模擬試験問題:50問

* 公式模擬問題集
https://www.ruby.or.jp/assets/images/ja/certification/examination/exam_pre

元記事を表示

ログイン機能において、他者の投稿の編集や削除をできないようにする処理(Rails・初心者向け)

webアプリケーションで他人と投稿を編集したり消すことができたらまずいですよね。
そこで、ログイン機能において他者の投稿の編集や削除ができないようにするための処理を実装していきます。
この記事では簡単な掲示板サイトを想定して説明しております。
Messageモデルやmessagesコントローラーがあるとして、考えてみましょう。

`$ rails g helper sessions`でhelperを用意して、`current_user`と`logged_in?`を実装します。ここは、今回メインで解説する箇所ではないので、簡単な説明で留めておきます。

“`Ruby:app/helpers/sessions_helper.rb
module SessionsHelper
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end

def logged_in?
!!current_user
end
end
“`
`def current_user`は、現在ログイン

元記事を表示

FaceAPIをRubyから使う

この記事は[Microsoft Azure Cognitive Services Advent Calendar 2020](https://qiita.com/advent-calendar/2020/cognitive)の21日目の記事です(大遅刻)。
RubyをやっててAIによる画像分析を簡単な形で使ってみたいな、という初心者向けの記事になります。

# FaceAPIとは
Microsoft Azureの提供する構築済みAIによる人間の特徴分析機能です。
AWS,GCP等各社がクラウドベースのAIを提供する中で私がこのサービスを選定したのはデフォルトで「年齢・性別」の機能を使えるからです。

Ledgeのまとめ記事が大変参考になりました。->[顔認識・顔検出とは?6つの顔認識APIの機能・精度・価格を比較!|Ledge.ai] (https://ledge.ai/faceapi/)

FaceAPIのデモページが[こちら](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/#demo)にあるの

元記事を表示

RubyでAmazon Textractを使ってみよう

Amazon Textractを使ってみたい方のために、なんとなく実行できるコードを紹介します。

あまり世の中にAmazon Textractを利用したRubyのサンプルコードがなかったので書いてみました。
有用なコードではありませんが、RubyでAmazon Textractをとりあえず利用してみたい方には参考にしていただけるのではないかと思います。

## 諸注意

– Amazon Textractは[有料のサービス](https://aws.amazon.com/jp/textract/pricing/)です。ちょっと触ってみるだけなら無料枠でおさまるとは思いますが、実行しすぎにはご注意ください。
– 2021年1月2日現在、Amazon Textractでは日本語を読み取ることはできません。

## 必要なgemをインストールする

– aws-sdk

## Amazon TextractのClientクラスインスタンスを生成する

リージョンにバージニア北部を指定しているのは、まだ東京リージョン(ap-northeast-1)では提供されていないためです。
これを省略す

元記事を表示

記事の並べ方(昇順・降順)について

#自己紹介
こんにちは!
今回初めて投稿をします。
同じことで何度も悩んでしまわない為の、自分用のメモとして、またアウトプットする事によって記憶の定着に繋がればと思い始めました。

それでも、もしかするとどなたかに拝見していただける機会があるかもしれませんので、少しだけ自己紹介をさせていただきます。
2020年10月中旬より本格的にプログラミングの勉強をスタートさせ、現在はプログラミングスクールも活用し、未経験の中途という形でエンジニア転職を目指している者です。

さて今回の本題に!

#投稿された記事をIDの若い順に並べてください。
この言葉にまず「若い順」ってどういう意味だろうと疑問に感じました。
結果から言うと、答えはそのままの意味で1.2.3.4….となるような数字の小さい順という事でした。
この若い順が一般的な昇順(asc)、その反対が降順(desc)になります。

今回のIDの話で例えると、
・昇順:IDが小さい順。古い記事が上にくる。
・降順:IDが大きい順。新しい記事が先頭にくる。

今回は、コントローラに記述する方法を使用したので残しておく事にします。

1.

元記事を表示

【Rails】slick(スライダー機能)を簡単に導入する方法

#はじめに
簡単~~?~~に実装できると思います。

“slick“とは画像等をスライドショーのように表示させる機能を付けられるjQueryプラグインです。

本記事は**導入方法**と**簡単な実装**のみを紹介します。

「サイトをおしゃれに仕上げたいから、もっと発展的なことを教えてくれ!」という方。
ごめんなさい。

“haml“や“slim“ではなく普通の“html“で記述していますので、初学者の人にとっても分かりやすいはず。。
~~haml.slimで書かれてる記事多すぎだぜ(つらい)~~

また私が最初に導入してエラーを吐いたところも解決方法とともに紹介していきます。
~~誰かが躓くところは皆転ぶ!~~

#こんな人に向けて
1.haml.slimがよくわからない初学者
2.rails に slickを導入したいけど方法が分からない人
3.他の記事を見ながら実装し、エラーを吐かれて詰んだ人 (この記事で詰まったらごめんなさい)

今回はrails 5.2.4を使っています。
またOSはWindowsですが、macでも同じだと思います。(見た目は少し違うかも。

元記事を表示

【Rails奮闘記/Railsチュートリアル編】Railsチュートリアル3章で学んだこと

## はじめに
Railsチュートリアル3章を終えました。
実務に入った上で、ルーティング・コントローラー・ビュー周りとテストを学習しました。
学習した中で、実務に使える内容をまとめました。

## コントローラー生成のコマンド
コントローラーを生成するときのコマンドは以下のようになります。

“`
$ rails g controller (コントローラー名) (アクション名)
“`

generateスクリプトではアクション名をまとめて指定することができる。
Railsチュートリアルでは、アクション名がhome、help、aboutに当たる。

もし、例えばコントローラー名のスペルを間違えた時など、コントローラーをコマンドですでに生成してまったら普通だったら1つ1つのファイルを削除することを考えるかと思います。
では、どうすれば良いか?
そんなときに便利なコマンドが以下のコマンドで、生成したコントローラーのファイルを一挙に削除することができます。

“`
$ rails destroy controller (コントローラー名) (アクション名)
“`

これだけで生成した

元記事を表示

Simple Calendar gemの導入・基本的な使い方

RailsのgemであるSimple Calendarを使ったアプリ開発を行っているので、後学のために、Simple Calendarの導入と基本的な使い方を説明します。

内容的には[simple_calendarの公式GitHub](https://github.com/excid3/simple_calendar)の日本語訳になります。

##Simple Calendarとは
カレンダー表示機能を簡単に実装できるようにしてくれるgemです。

##実行環境
– Ruby 2.6.5
– Rails 6.0.3.4

##Simple Calenderのインストール

`Gemfile`に以下のように記述し、ターミナルで`bundle install`を入力します。

“`:Gemfile
gem “simple_calendar”, “~> 2.0”
“`

“`:ターミナル
bundle install
“`
`application.css`ファイルにデフォルトのスタイルシートを読み込みます。

“`app/assets/stylesheets/applicati

元記事を表示

【Ruby】10の位と1の位を取得する方法

## 概要

二桁の整数から10の位と1の位を取得して、計算結果を出力するまでを書いていきます。

## 目次

– 実践
– 問題
– 解答(解説)
– 別解(digitsメソッド)
– 別解(divmodメソッド)

– まとめ

– 参考文献

## 実践

#### 問題

>二桁の整数から**10の位と1の位**の数字の**足し算と掛け算の結果**を足し合わせて出力するプログラムを書いてください

#### 解答(解説)

“`ruby:解答
def addition(a, b)
a + b
end

# 10の位と1の位の掛け算
def multiplication(a, b)
a * b
end

def check_num(num)
tens_place = (num / 10) % 10 # 10の位を10で割ることで1桁にしてから余りを計算している
ones_place = num % 10 # 10で割ったときの余りが1の位になる

addition_result = addi

元記事を表示

スクレイピングでアクセスブロックを回避するために注意すること

普段、クローラー開発をメインに仕事をしている。
業務上、データを収集するために様々なサイトにアクセスする機会があり、日々アクセスブロックと格闘している。
今回は自分の備忘録も兼ねて、スクレイピングでアクセスブロックに合わないための技術や対処法をまとめておく。
扱うスクレイピング技術はRubyのopen-uri、curlコマンド、selenium。
改めて言うまでもないが、クロール先サイトの規約や関連法律の遵守はしよう。

#アクセスブロックされたときにチェックする項目
アクセスブロックには様々な種類があり、適切な手段をもって回避する

##IP
1:アクセス頻度
頻繁にサイト側にリスエストを送信すると、ロボット判定される可能性がある。
解決策:sleep時間を増やす。クロール回数*sleep=所要時間<許容所要時間に収まる範囲で、sleepは長く取る。

2:同じペースでリスエストを送信すると、ロボット判定される可能性がある。
解決策:ランダムなsleep時間を設定する。

3:同一IPから同一サイトにリクエストを頻繁に送信した場合、IP単位でブロックされる可能性がある。
解決策:1I

元記事を表示

cloud9でインスタンスを作成し直したい場合

初めて記事を書きます。
これは自分用のメモです

cloud9の設定をミスってしまった。
勢い余ってEC2のストレージ容量を無料枠以上にアゲてしまった。
その他よくわからなくなってまた最初から始めたい。
そのようばあい

githubにpushしていることが前提です。
そのpushをcloud9にcloneします。

loud9に新しいインスタンスを作成します。
作成時の設定はrails チュートリアルに従いました。

gitが入っているかを確認(私の環境では既に入っていました)します。

次に新しく作成したインスタンスに自分のgithubの情報を教えてあげます。

git config –global user.name USER_NAME

git config –global user.email EMAIL_ADDRESS

USER_NAME,EMAIL_ADDRESSには自分のユーザーネームとemailアドレスを代入します。私の場合は、

git config –global user.name irojiroserika

となります。

特にレスポン

元記事を表示

Ruby/Racc: パースに失敗した位置(行、桁)を得る

パースに失敗したとき、失敗した位置をたとえば次のように表示したいですよね?

“`
parse error: line 2, col 5
foo bar
^
“`

—-

短いのでとりあえず全部貼ります。

“`ruby
# parser.y

class Parser

rule
program: “a” “b” “c” “d” “;”
{
puts “program found”
result = val
}
end

—- header

TokenValue = Struct.new(:value, :pos)

—- inner

def initialize(src, tokens)
@src = src
@tokens = tokens
end

def next_token
@tokens.shift
end

def parse
do_parse
end

def get_lineno_and_range(pos)
lineno = 1
line_start = 0
range = n

元記事を表示

【Rails奮闘記/Railsチュートリアル編】Herokuコマンドのまとめ

## はじめに
あけましておめでとうございます。
今日から2021年になりました。
本年度もよろしくお願いします。
今回はRailsチュートリアルのHerokuコマンドについて自分で学習したことを簡単にまとめました。
ここではHerokuのアカウントの新規アカウントの作成とHerokuをインストールについては省略します。

## Herokuコマンド
Herokuがインストールされてるかどうかを確認したいとき

“`
$ heroku –version
“`

Herokuを開かずにログインしたいとき

“`
$ heroku login –interactive
“`

Herokuに新しいアプリケーションを作成したいとき

“`
$ heroku create
“`

Gitを使ってHerokuにリポジトリをプッシュ

“`
$ git push heroku master
“`

アプリケーションの名前を変更したいとき

“`
$ heroku rename (アプリの名前)
“`

本番環境のログを取得したいとき

“`
$ heroku logs
`

元記事を表示

Gemを追加してbuildしたら「Could not find XXX in any of the sources」のエラーが出てハマった時に行ったこと

#概要
「Could not find XXX in any of the sources」が出て1時間半ほどハマったので解決の過程をメモとして残しておく。

#状況
「rails-controller-testing」をGemfileに追加してdocker-compose buildし、ビルドが完了したのを確認してテストを実行したところエラーをはいた。

“`
Could not find rails-controller-testing-1.0.5 in any of the sources
Run `bundle install` to install missing gems.
“`

追加したGemが見つからないと言われてるらしい。指示に従ってdocker-compose run web bundle installを実行。再びテストを実行するも同じエラーを吐いた。

#試したこと
・Gemfileで指定されてる書き方をしているか
 →問題なし。指定通りに記載されている。
・rails-controller-testing-1.0.5のバージョンは対応しているか
 →r

元記事を表示

Rails でDB に保存されたenum の値をattribute_before_type_cast で取得する

# はじめに

Rails でDB に保存されたenum の値を`attribute_before_type_cast` で取得する方法の備忘録です

# 環境

* macOS 10.15.6
* Ruby 2.5.7
* Rails 5.2.3

# 参考URL

元記事を表示

rubyで住所文字列から最寄駅までの距離を取得してみた

rubyで住所から最寄駅の情報を取得できる様にしてみました。

## やったことざっくり
1. Yahoo APIで住所からを緯度経度を取得
2. Heart Rails APIで緯度経度から最寄駅情報を取得

## 実行環境
1. ruby2.7.2
2. mac catalina
3. 実行日時 2021/01/01

## 1. Yahoo APIで住所からを緯度経度を取得
### 1.1 yahoo app ID 取得
ここで取得する
https://e.developer.yahoo.co.jp/dashboard/

### 1.2 リクエストする
・リクエストする住所をurl様にエンコード
・open-uriでリクエストする
レスポンスはこんな感じ
![スクリーンショット 2021-01-01 14.58.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139714/ff290021-3dd6-256b-d380-da937bc32841.png)

### 1.3 レスポンスか

元記事を表示

騙されるな!プログラミングの勉強なんて最初はこれだけで十分!

「プログラマーなら最低限これくらい勉強しておかないと…」
「今時、〇〇を使わないなんて…」

**うるせーーーーーーー!!!!!!!**

近頃、プログラミングについての情報発信が多いので、色々と勉強しないといけないと思っている人が多いです。

初心者がDockerを勉強していたり、CI/CDツールを使おうとしていたり…

楽しいならそれでいいのですが、特に必要性もないのに無理に難しい技術を使っても頭に入ってこないと思います。

プログラミングを効率よく習得するなら、勉強するより開発することです。

料理も座学で勉強しまくるより、作りまくったほうが上達しますよね?
プログラミングもそんなもんです。

特にプログラミングをまだ面白いと思えていない方は、情報に振り回されて勉強ばかりしている可能性大です。
上達するためにも、楽しさを知るためにも、簡単なサービスでいいのでさっさと開発してみましょう。

とはいえ知識0では開発することが難しいという意見も分かります。
**そこで下記の対象者のような方が、何をどれくらい勉強すればいいのか簡単に紹介します。**

「対象者」

+ 勉強を始めたばかり

元記事を表示

【Heroku】デプロイ時 We’re sorry, but something went wrong.解決方法

ローカル環境で構築して、Herokuにデプロイしたが、こんな画面がでてしまいました。
![スクリーンショット 2020-12-19 18.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693502/b6b7416a-28a6-3818-4ea1-aea0757aad93.png)
`We’re sorry, but something went wrong.`

#原因
開発環境(deveropment)はMySQLとしていたが、Herokuの標準データベースはPostgreSQLだが、MySQLのままだった。
#対処方法
gemに下記を追記して、本番環境ではpostgreSQLを適用する。

“`gemfile
group :production do
gem ‘pg’, ‘>= 0.18’, ‘< 2.0' end ``` ※`group :production do`で本番環境のみの適用となります。 bundle installしますが、開発環境のみで本番環境では不要なので、`

元記事を表示

Docker上のRailsでコントローラーの変更がブラウザに反映されない時の対処法

## 問題
`controller.rb`の変更がブラウザに反映されない。
コンテナを再起動すれば反映されるが、毎回再起動するのは手間がかかる。

## 環境
`Windows 10 home`
`Docker for Windows`
`Rails 6.1`
`Ruby 2.7`

## 解決策
`config\environments\development.rb`内の
`config.file_watcher = ActiveSupport::EventedFileUpdateChecker`を下記コードに修正する。

“`Ruby
config.file_watcher = ActiveSupport::FileUpdateChecker
“`

## わからないこと
下記コードを記載しても解決できる。
Railsガイドを見ても上記コードとの違いがわからなかったので、違いが分かる人がいましたら、ご教授いただければ幸いです。

“`Ruby
config.reload_classes_only_on_change = false
“`
参照:[『Railsガイド』- Ra

元記事を表示

OTHERカテゴリの最新記事