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

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

【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

元記事を表示

【Rails/他にも応用できるかも?】RSpec実行時に、failure/error __send__(method file) rspec cannnot road such fileが出た場合の対応策

# はじめに
こんにちは、[yuki](https://twitter.com/yuki82511988)と申します。よろしくお願いします。
現在、物流関係の企業でWebエンジニアとして勤務しております。(1年目)
弊社はメインで利用している言語がPHPなのですが、自分が個人の開発でRubyを使うことがあるので
今回はRSpecに関する記事を書きました。

## 読者の対象
– 掲題のエラーが発生している方
– エラーに遭遇しており「load」という単語がエラー文に含まれている方

## 読んで分かること
– 掲題のエラーの解決方法
– Load関係のエラーへの一種のアプローチ方法

# エラーが起きた状況
プログラミングのメンターをしていた際に、生徒さんの方で
Rspecの実行コマンド
`bundle exec rspec spec –format documentation`を行った際に、掲題のエラーが出ました。

## 原因
直接的な原因は、**specフォルダを2個作っていること**でした。
それが原因で、読み込みの際にエラーが出ていたようです。

エラー文を解読しようとする

元記事を表示

【テメーは俺を】未経験からエンジニアを目指している方達からDMで来た質問と回答 + 質問のマナーに関して言いたいこと。【怒らせた】

## はじめに
煽りタイトルですみません。

[yuki](https://twitter.com/yuki82511988)と申します。DMMWEBCAMPにお世話になって、今はWEBエンジニアとして勤務しつつ、自分で仲間を集めてサービス開発したり、プログラミングの家庭教師したり毎日エンジニアライフをエンジョイしています。

未経験から目指している方向けのサポートやエラー質問なども引き受けておりますので、気になった方はDMへお願いします。

## 執筆の動機と、この記事を読んだらわかること
ありがたいことに、DMの方へ未経験の方や現在学習中の方から質問をいただくことがあります。私はまだ実務経験が浅いので~~どこぞのフォロワーが多い方々のように~~断言することはしていませんが、それでも未経験から転職できたサンプルとして、お答えできることは回答しています。

今回、良くある質問も溜まってきまして、かつちょっと**言いたいこと**ができたのでまとめました。
偉そうにするつもりはありませんが、もし他にもこういう感じのDMを送ろうとしている方の参考になればと思い、まとめました。

二つの意味合

元記事を表示

swagger書くのがめんどくさい!- Rspecからyaml自動生成してみた –

## はじめに
こんにちは。サーバーサイドエンジニア1年目のものです。
APIを作っていて最近いつも思うわけです。「swagger書くのだるい」と。どうにか自動化できないかと模索している中で、5ヶ月ほど前に作られたgemを発見したのでそれを使って自動化してみたという記事です。

rspec-openapi: https://github.com/k0kubun/rspec-openapi

ちなみにswaggerっていうのはこれです。swaggerの導入の仕方などはここでは省略します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376893/e09b16ec-b33a-9c2f-f594-c37800610cf7.png)

## 今までgemとの違い(Readme参照)
これまでにもrspecからswaggerを自動生成するgemはありました。
– [zipmark/rspec_api_documentation](https://github.com/zipmark/rspec

元記事を表示

herokuにデプロイすると 『We’re sorry, but something went wrong.If you are the application owner check the logs for more information.』が立ちはだかった。

プログラミング初学者です。
認識の誤り、そもそも間違ってるで?というところはご教授いただけると嬉しいです。

“・エラー発生の要因
・要因発見までの方法
・なぜその要因がエラーになるのか“

について記述しています。

#herokuデプロイ後に特定ページで『We’re sorry, but something went wrong.If you are the application owner check the logs for more informatio』が立ちはだかった件
ユーザー登録後に遷移するページでエラーがでました。
![デプロイエラー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/764924/7b621319-735b-9cea-0173-c1208ecf12bb.png)

ローカル開発環境(cloud9)では問題なく表示できていたのですが・・
エラー発生以降、ググって試して、ググって試してを繰り返し、1日半かけて無事解決。

__さて、何が原因だったのか__

##結

元記事を表示

Rubyの人に今すぐ伝えたいwebpackとwebpacker

# 導入部

## はじめに

 RubyやRailsをメインで開発していて、「正直JSはよくわからん」という人は、結構いると思います。
 しかしブラウザがそこにある限り人類はJSから逃れることはできません。
 この記事は、JSに苦手意識のあるRubistたちにwebpackとお友達になってもらうために書きました。

 webpackerが何なのか知っておくと、役に立つ日が絶対に来るので、ぜひ知らない人は読んでください。
 もし私がJSをよく知らないRails開発者だったら、webpackやwebpackerが何者なのかを、こう教えてほしいという気持ちで書いています。

## 対象読者

– webpackがなんのためにあるのか分かっていない開発者
– webpackerをよく分からないうちに使っているRails開発者

## 概要

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

– なぜ私達はwebpackを使うのか(前半)
– webpackとwebpackerは何をしているのか(後半)

### この記事で説明しないこと

– webpack.config.jsの詳細な書き方

# webp

元記事を表示

【JavaScript】axios(ajax)でエラー時のレスポンスbodyが取得できない

## はじめに

盲点だったのでメモ。
フロントからRailsのAPIへpostしてエラーになった際、詳細なメッセージをresponseボディに入れて返したかった。

##Ruby on Rails

“`ruby
if user.save
render json: { status: 200, data: user }
else
render status: :unprocessable_entity, json:{ messages: user.errors.full_messages }
end
“`

## JavaScript

“`javascript
axios
.post(process.env.API_URL + ‘/api/v1/users/signup’)
.then((res) => {
console.log(res)
})
.catch((e) => {
console.log(e)
})
“`

## 結果

“`shell
Error: Request failed with status co

元記事を表示

コメント機能を実装

#コメント機能を実装してみる
##アプリケーションを作成
“`java:ターミナル
% cd projects
% rails _6.0.0_ new mini_talk_app -d mysql
% cd mini_talk_app
% rails db:create
“`
##コントローラーとモデルを作成
“`java:ターミナル
% rails g controller messages new
% rails g model message text:text
% rails db:migrate
“`
##ルーティングを設定
“`java:app/config/routes.rb
Rails.application.routes.draw do
root ‘messages#new’
resources :messages, only: [:create]
end
“`
##messages_controller.rbを編集
“`java:new.html.erbを編集

mini_talk_app

<%= form_with model

元記事を表示

deviseでよく使うメソッドについて

#はじめに
 以前に、deviseの導入等について投稿したので、今回はdeviseで扱えるメソッドに焦点を当てて、説明をする。

【以前の投稿】

[初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/b5523ad100d08126a547)
[続・初見で難解だったdeviseを改めてまとめてみた](https://qiita.com/TerToEer_sho/items/9231d4fd8155dd3063be)

###user_signed_in?メソッド
ユーザーがサインインしてる状態かどうかを判断し、真偽値を返す。

サインインしているユーザーとそうでないユーザーで表示させたいものを変えたいときにif文を用いて使うことが多い。
例えば、サインインしているユーザーには、「ログアウト」サインインしていないユーザーには「サインイン」など

###authenticate_user!メソッド
ログインしていないユーザーをログインページの画面に遷移させる。
コントローラーにbefore_actionで記述す

元記事を表示

railsでコントローラー、モデルを新規作成する際の命名規則

新規で

“`
$ rails g controller
$ rails g model
“`

する際に、

**「あれ、コントローラーの時って複数形にするんだっけ?」**
**「モデル名に複数単語指定する時ってどう書けば良いんだ?」**

みたいに毎回ググっていたので、記憶の定着も兼ねて。

#一番大事なポイント

・コントローラの新規作成は**複数形**
・モデルの新規作成は**単数形**
・コントローラ、モデル共に**スネークケース、キャメルケースどちらも使用可能**

#コントローラ

コントローラを新規作成する際は、必ず複数形で指定する。

“`
$ rails g controller users
$ rails g controller posts
$ rails g controller likes
“`

複数の単語を組み合わせる際は、スネークケース、キャメルケースどちらでもOK。

“`
$ rails g controller post_likes #スネークケース
$ rails g controller PostLikes #キャメルケース

元記事を表示

Railsでアプリ作成時、大まかな手順の言語化アウトプット

# Ruby on Railsでアプリ作成時の大まかな手順

今回の記事の目的はアプリ作成の際の手順を大まかに言葉で説明したものになります。
勉強を初めて自分のアウトプット用に作成しました。

## 1.準備
ターミナルで以下のコマンドを実行。
・ rails new (バージョン指定) (指定したいデータベース)
・ cd (作成したディレクトリ)

## 2.データベース作成
ターミナルで以下のコマンドを実行。
・ rails db:create
・ rails s

## 3.Gemファイルの編集
必要に応じてRailsのバージョン指定、必要なGemをインストールする。
完了後、以下を必要に応じてターミナルで実行。
・ bundle install
・ bundle update

## 4.投稿モデルの作成
ターミナルで以下を実行。
・ rails g model (モデル名)

## 5.テーブル作成
マイグレーションファイルを編集し、データベースに作成したいカラムを記述する。完了後にターミナルで以下を実行。
・ rails db:migrate
※一度マイグレートしたフ

元記事を表示

devise_parameter_sanitizerメソッドが訳わかってないのでここにアウトプットしてみる

Railsで写経をしていた際に出てきたメソッドで「何これ」となったので、もう一度復習してみて、それをアウトプットと忘備録として書いてみようと思います。

###devise_parameter_sanitizerとは
devise_parameter_sanitizerはdeviseというgemに用意されているメソッドで
ユーザー管理機能を実装する際に、ログインや新規登録などのリクエストからパラメーター(名前やメールなど)を取得するメソッドであるということです。

###パラメーターについて
パラメーターとはリクエストに含まれる外部から渡されるデータで、
コントローラーで処理されて、モデルを通じてテーブルのカラムにデータとして登録されます。
ブラウザの入力欄などから入力して送られてくるデータといったところでしょうか…

フォームにデータを入力してそれをリクエストとして送信するためには下記のような記述を書いてみます。

“`ruby:index.html
#これは送り手側の話
<%= form_with url:”URL”, method: :post, local: true

元記事を表示

[Ruby]tapメソッドでHashの初期化と同時にその階層を定義する

参考書とかに書いてあるのだろうと思いますが、備忘録代わりに。

## たとえば

以下のような複数の要素が混ざった配列を連想配列で分離させたい場合

“`rb

array = [1, 2, “a”, 3, “b”, “c”, 4]

ideal_hash = {
hoge: [1, 2, 3, 4],
fuga: [“a”, “b”, “c”]
}
“`

## 今まで自分が書いていたコード

“`rb

ideal_hash = { hoge: [], fuga: [] }

array.each do |i|
i.is_a?(Integer) ? hash[:hoge] << i : hash[:fuga] << i end ``` ## こうも書けるということを最近知った tapメソッドは生成した自分自身を返すので、スッキリ書けるというのもあり、できるだけ使っていきたいという気持ちがあります。 ```rb { hoge: [], fuga: [] }.tap do |hash| array.each do |i| i.is_a?(Integ

元記事を表示

無料版のsentryでslackに通知を送る(lambda利用)

# この記事について
slackに通知させるには、sentryのintegrationとして用意があるのですが、利用できるのが有料版のみとなっています。

個人でのプロジェクトでの利用で、有料化するつもりはなく、無料版でもできるようにしてみました。
通知の部分のみにフォーカスしているので、sentryの設定などは、説明を省いております。

# 対象
– sentryの無料版を利用していて、slackに通知したい
– awsのアカウントを持っている

# 方法について
sentryのwebhookを利用します。
送信先にlambdaのURIを指定して、lamdaからslackのwebhookにリクエストします。

# 手順

– slackのincoming webhookを設定して、リクエスト先を用意します。(いろいろ記事があるので省略)
– lambdaを作成し、環境変数`SLACK_INCOMING_WEBHOOK_URL `に、slackのURIを設定する
– lambda処理を下記をコピペして保存・デプロイ(サンプルはruby)

“`ruby
require ‘json’

元記事を表示

【Ruby】正規表現で特定のパターンを除外して置換する

## 背景

– `http://aaa/ccc` → `http://aaa/bbb/ccc` にしたい
– しかし、元々、`http://aaa/bbb/ccc`のものはそのままで良い

という状況で使えるコマンドが欲しかったです。
つまり、置換はするのですが、なんでも置換するのではなく除外するパターンもあるという除外です。

## コマンド

正規表現の否定的先読みを使います

例えば、playの過去系のみ置換しないのなら、

“` ruby
“play plays played”.gsub(/play(?!ed)/, “eat”)
#=> “eat eats played”
“`
というコマンドになります。
前述のurlに関しては、

“` ruby
“http://aaa/ccc”.gsub(/http:\/\/aaa\/(?!bbb\/)/, “http://aaa/bbb/”)
#=>”http://aaa/bbb/ccc”

“http://aaa/bbb/ccc”.gsub(/http:\/\/aaa\/(?!bbb\/)/, “http://aaa/bbb/”

元記事を表示

[Rails]星評価の実装方法

# 実装したい機能
– 星評価で入力、登録できるようにする
– 登録した星評価を表示
![](https://i.gyazo.com/70c7d28382557f1bda0ce13beead9af7.png)

# 目次
1. カラムの設定
2. 星評価の準備
3. 星評価の入力と保存
4. 星評価の表示

# 1. カラムの設定
評価を保存しておくカラムを設定します。
カラム型は星半分評価をできるようにするため、float型を用います。

“`ruby:db/migrate/20XXXXXXXXXXXX_create_posts.rb
class CreatePosts < ActiveRecord::Migration[6.0] def change create_table :posts do |t| ~略~ t.float :evaluation, null: false ~略~ end end end ``` # 2. 星評価の準備 ### 星の画像 https://github.com/wbotelhos/raty

元記事を表示

TECH CAMP (エンジニア転職)4週目の学習内容の振り返り

今週やったことは大きく3つあって、1つ目はチャットアプリの作成で、2つ目はrubyとrailsの総復習、そして3つ目はjavascriptに関する学習です。
1つめのチャットアプリの作成では
・要件定義
・DB設計
・フロント実装
・サーバーサイド実装
・Rspecを用いたテスト

2つめのrailsの復習では
・railsの基本理念
・MVCのそれぞれの役割
・MVCに付随する関連知識

3つめのjavascriptの学習では
・基本文法
・関数の種類
・javascriptの関連ライブラリ
について学びました。

初投稿なので記法も何もわからない、、、(泣)

元記事を表示

AWS 修正ファイルを本番環境でgit pull したらエラーが発生した / error: The following untracked working tree files would be overwritten by merge:

# どんなエラー

既にAWSでデプロイ済みのファイルを修正して、更新する際に下記のエラーが発生しました。

“`ruby:terminal
[ec2-user@XXXX XXX]$ git pull
Updating 98941d5..33a4f3d
error: The following untracked working tree files would be overwritten by merge:
vendor/bundle/ruby/2.5.0/bin/byebug
vendor/bundle/ruby/2.5.0/bin/coderay
vendor/bundle/ruby/2.5.0/bin/dotenv
vendor/bundle/ruby/2.5.0/bin/geocode
vendor/bundle/ruby/2.5.0/bin/nokogiri
vendor/bundle/ruby/2.5.0/bin/pry
vendor/bundle/ruby/2.5.0/bin/puma
vendor/bundle/ruby/2.5.0/bin/pum

元記事を表示

Rails 投稿フォームを作成したが投稿できない(formタグ) / エラー発生しない

#どんなエラー

このミス、私は2回ひっかかりまして。
1回目はエラーも起きてないのに、なぜか投稿ができない!
エラー文がないから、検索して調べることもできない!と、悩んでしまました。

2回目(昨日)は、なんで!って思ったけど、なんか数ヶ月前にも同じことあったような・・
というので、解決できました。

また同じようなことを起こさないために、記録として残しておきます。

具体的には、下記のようなことが発生してました。

①投稿フォームに記入します

![スクリーンショット 2020-11-01 16.32.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664818/1c0b3b7b-9d8c-bd5e-fbe7-9cba3ff12c69.png)

②必須事項を記入して、「キロクする」を押すと、なぜか初期画面に戻ります。
URLもなんかおかしいです。

![スクリーンショット 2020-11-01 16.32.14.png](https://qiita-image-store.s3.ap-nor

元記事を表示

Amazon S3 バッチオペレーションを使って日付毎に区切られたGlacierをディレクトリごと復元する

# 背景
S3に`bucket/log/20201101`のようにdailyでログデータを保存しており、一定期間がたったログについてはS3からGlacierに移していましたが、Glacierのログデータが数ヶ月分必要になり、それを復元する必要がありました。

# 検討したこと
– [S3 Glacierアーカイブをフォルダごと復元 \- Qiita](https://qiita.com/kobake@github/items/32bfbe59da2143c5f572)
– インストールが割と大変で今回はこのツールは使いませんでした。

– [まとめてGlacierからS3に戻すためのワンライナー \- Qiita](https://qiita.com/fanglang/items/91770ea74dfc03beb554)
– データ量が少なければワンライナーでも良いと思うのですが、今回の数ヶ月分のデータの場合1日復元するのに1時間かかっていました。(非同期のオプション等があれば違うかもしれないです。)

# 対応
S3の大量のオブジェクトに対して復元という一つの操作をす

元記事を表示

OTHERカテゴリの最新記事