Rails関連のことを調べてみた2021年03月25日

Rails関連のことを調べてみた2021年03月25日

【AWS】EC2へのデプロイ時にmimemagicのバージョンエラーが出た場合の対処

$ bundle install
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock –add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/………
Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources l

元記事を表示

RSpec 多対多関係 モデルテスト(例.Tagモデル)

#はじめに
rspecのTagのmodelテストをする際、中間テーブル(post_tag)を介したやり方に苦戦したため、
factory_botを用いて、多対多関係 (has_many through) のテスト作成方法をご説明致します。

##テーブル
`post`と`tag`の間に`post_tag`テーブルがある状態です。

スクリーンショット 2021-02-27 11.08.49.png

#到達点
以下の2点を達成する
・中間テーブルを介したmodelテストのFactoryBotを理解する
・中間テーブルを介したmodelテストの記述方法を理解する

##流れ
① 各モデルのvalidatesを確認
② FactoryBotの記述
③ modelテストの記述

#① 各モデルのvalidatesを確

元記事を表示

バリデーションの書き方(Rails)

#バリデーションとは
バリデーションは、正しいデータだけをデータベースに保存するために制約をかける事です。
`model`に書くことでデータベースに保存する前に受け取った情報を正しいのか判定させます。

##空でないこと
“`ruby:
validates :name, presence: true
“`
##空であること
“`ruby:
validates :name, absence: true
“`
##一意性であること(重複していないこと)
“`ruby:
validates :name, uniqueness: true
“`
##文字数制限
“`ruby:
validates :name, length: { minimum: 2 } # 2文字以上
validates :name, length: { maximum: 50 } # 50文字以下
validates :name, length: { in: 2..50 } # 2文字以上50文字以下
validates :name, length: { is: 6 } # 6文字のみ

元記事を表示

Rails6でaction_textを使う

action_textを使いたい。

一. action_textのマイグレーションファイルを生成してマイグレート

“`
rails action_text:install
“`

“`
rails db:migrate
“`

二. gem file内のimage_processingのコメントアウトを外してbundle install

“`
gem ‘image_processing’, ‘~> 1.2’
“`

“`
bundle install
“`

三. scaffoldでモデルを作成(ここではstring型のtitleカラムだけを持ったpostモデルを想定)してマイグレート

“`
rails g scaffold post title:string
“`

“`
rails db:migrate
“`

四. Postモデルにhas_rich_text :contentを追記

“`
class Post < ApplicationRecord has_rich_text :content end ``` 五. posts.contr

元記事を表示

【Cloud9】failed to write new configuration file /home/ubuntu/.gitconfig.lock

## Error

Rails チュートリアルをやるために Cloud9 を開いたところ下記のエラーが発生。
Tab 補完が効かないなど変な挙動になった。

“`
error: failed to write new configuration file /home/ubuntu/.gitconfig.lock

┌──────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /home/ubuntu/.config │
└───────────────────────────────────

元記事を表示

Cloud9でrails-serverが起動できない

rails-tutorialを学習中、rails-serverが起動できなくなり以下の画像が出ることが多くありました。

![スクリーンショット 2021-02-28 23.08.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864243/7620bcfb-d19d-82ab-8985-033d8714123b.png)

原因は?
PCをシャットダウンし、次の日などに学習する際必ず起きてしまう。

対策
ネット上では私のエラーはあまり見受けられなく、何が原因なのかわからない状態です。

rails-server再起動をするためEC2ダッシュボードからインスタンス画面に向かいましたがインスタンスは作成されておらず…

解決できましたら追記します。

元記事を表示

[Rails] simple_calendarでデフォルトの属性名”start_time” 以外の属性を使用する場合。

`simple_calendar` を導入し、view、controllerを作成している前提です。
[simple_calendar導入方法](https://qiita.com/isaatsu0131/items/ad1d0a6130fe4fd339d0)

デフォルトでは `start_time` のみが属性名として使用されます。
それ以外の属性名を使用したい場合は、 `attribute: :開始時間の属性名, end_attribute: :終了時間の属性名` を `events:` の後に続けて追記します。

以下は、 `start_at` `end_at` に属性名を設定した例です。

“`:views/blogs/index
<%= month_calendar events: @blogs, attribute: :start_at, end_attribute: :end_at do |date, blog| %>
<%= date.day %>

<% end %>
“`

元記事を表示

Ruby on Rails 製 Web アプリケーションのセキュリティテストガイド (静的テスト:SAST)

## これなに?

Ruby on Rails 製 Webアプリケーションのセキュリティテストをするためのガイドです。本ガイドは脆弱なRailsアプリである [RailsGoat](https://github.com/OWASP/railsgoat) を題材にセキュリティテストの手法を解説します。

本記事ではソースコードをレビューして脆弱性を発見する手法である __静的アプリケーションセキュリティテスト(SAST)__ を扱います。

### 対象読者

Ruby on Rails でプロダクト開発している組織の**セキュリティチーム**を想定していますが、セキュリティに関心がある**開発者**や**テスター**にとっても役立つしれません。

前提知識・スキル

– 情報セキュリティに関する基本的な用語を知ってること
– 基本的なWebアプリケーションの脆弱性について知ってること
– Ruby on Rails のコードが読めること
– Linux のコマンドを叩けること

### 目次

1. 静的アプリケーションセキュリティテストの準備
2. Rails のコードをBrake

元記事を表示

RubocopがCircleCI上でのみエラーになる事象について

# 事象
ローカルでは問題なくrubocopを実行できたのですが、
Githubにプッシュ、CircleCI上でrubocopを実行すると以下のようなエラーが起きました。

“`
#!/bin/bash -eo pipefail
mkdir -p /tmp/rubocop-results
bundle exec rubocop . –out /tmp/rubocop-results/check-results.xml –format progress
/home/circleci/electronote/.rubocop.yml: Warning: no department given for AsciiComments.
404 “Not Found” while downloading remote config file http://shopify.github.io/ruby-style-guide/rubocop.yml
/usr/local/lib/ruby/2.7.0/net/http/response.rb:124:in `error!’
“`

# 結論

元記事を表示

【Gem】deviseの導入

# devise
ユーザー管理機能を簡単に実装するためのGem。
ユーザー新規登録やログイン機能を簡単に実装することができる:v:(とても便利)

# deviseの使い方
###Gemfile編集
Gemfileの最後の行に追記する。
(開発環境、テスト環境、本番環境すべてで使用するため!と認識してます:thinking:)

“`:Gemfile
(省略)
gem ‘devise’
“`

###コマンドを実行してGemインストール
“`:ターミナル
bundle install
“`
ローカルサーバーを起動している場合は**サーバーの再起動**を忘れずに!!

####少し脱線
ローカルサーバーを起動した状態でコードを編集しても、ブラウザを更新すれば、その編集内容はブラウザに反映されます。しかし、開発環境で以下の変更をした場合、必ずローカルサーバーを再起動する必要があります。

* Rubyバージョンの変更
* テーブル・カラム情報の変更
* Gemの導入状況の変更 ⬅︎ 今回はこれ:eyes:

これらに関わる情報は、**「ローカルサーバーを起動するタイミングに1度だけ

元記事を表示

[Rails] bundle installがYour bundle is locked to mimemagic (0.3.5)…で落ちる

# Github Actionsで突然bundle installがコケた。。
“`sh

Fetching gem metadata from https://rubygems.org/…………
Your bundle is locked to mimemagic (0.3.5), but that version could not be found
in any of the sources listed in your Gemfile. If you haven’t changed sources,
that means the author of mimemagic (0.3.5) has removed it. You’ll need to update
your bundle to a version other than mimemagic (0.3.5) that hasn’t been removed
in order to install.
“`

# mimemagicの0.3.5が削除されたらしい
[rubygemsのサイト](https:

元記事を表示

いつも邪魔してくるturbolinksとはなんぞや

こんばんは、たにーです。

最近チーム開発と色々やることが多くなかなか書けずに、、、
とりあえず今日時点まで学んだことを振り返りながら記事にしていきます。

今日は、タイトルの通り、
####「turbolinks」とはなんぞや
です。

Rubyのフレームワークである**Ruby on Rails**を使ったことがある人なら
恐らく、**こやつ(turbolinks)**のせいで、上手く動かない、反応しないなどの経験があると思います。
私自身も経験があり、turbolinksに邪魔されてきた初学者です。泣

だだ、私自身こやつのことを何にもわかっていません。
なので、今回は、tubolinksの正体?機能?必要?不必要?について
書いてきますのでよろしくお願いします。

#そもそものturbolinksって?

**Asset Pipeline を活用しているアプリケーションにおいて画面遷移を高速化するライブラリです。**

、、、僕はいまいちピンと来ず理解できません。

なので、分解します。

##Asset Pipelineとは

**複数のディレクトリやファイルに分かれたass

元記事を表示

rails 環境構築

#rails の環境構築の際にエラー
Gem(Rubyのライブラリ)をインストールしようとした際に
(下記のコードを実行)

“`
$ bundle install –path vendor/bundle
“`
見た所 mimemagicが怪しい。。
[![Image from Gyazo](https://i.gyazo.com/8fbe3980f302e984e671d56dd941615b.png)](https://gyazo.com/8fbe3980f302e984e671d56dd941615b)

Gemfile.lock で指定されている「mimemagic」というgemを検索してみます。
以下アクセスして、問題が出ているgemを検索する。
[![Image from Gyazo](https://i.gyazo.com/4aa5344d74f75b2717c6ac7847a5b3d6.png)](https://gyazo.com/4aa5344d74f75b2717c6ac7847a5b3d6)

#解決策
特に問題はなかった為対象のgemをupdate

元記事を表示

display: flex; アウトプット

display: flex;は、親要素に記述し、
子要素のclassセレクタ内に横並びにする内容を記述します。

“`css
.card__wrapper {
display: flex;  /*親要素に記述*/
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
}

.card { /*子要素を作成*/
width: calc((100% – 50px) / 3);
margin-bottom: 40px;
}
“`
↓each文の外に親要素のclassセレクタを記述します。

“`ruby

 #親要素
<% @tweets.each do |tweet| %>
<%= render partial: "tweets/tweet", locals: { tweet: tweet } %>
<% end %>

“`
↓render先のファイルです。
 子

元記事を表示

rails g scaffold で楽々下準備

安易はcrud処理も自動で作ってくれる優れもの^^
だと思っております 笑

## scaffoldとは
他の`rails g`コマンドは不要で、
Webアプリケーションに必要な`crud処理`も一度に自動で組み立ててくれるのがscaffold。

# scaffoldの使い方

`$ rails g scaffold hoge title:string content:text`
このコマンドだけでhogesコントローラーやhogeモデルができる。
$ rake db:create
$ rake db:migrate
$ rails s

以上で
`index show new edit create update destroy`
7つのアクションの準備ができます。

元記事を表示

Ransackで全角半角不分別の検索を行う

*600 Contributions達成記念*

# TL;DR
入力されたキーワードを加え、全角、半角バージョンを追加して、`_any`をつけて検索します。

“`rb
User.ransack({name_cont_any: [‘テストテスト123abC’, ‘テストテスト123abC’, ‘テストテスト123abC’]})
“`

# 全角<=>半角変換
## 英数字
### 半=>全
“`rb
“abc123”.tr(‘0-9a-zA-Z’, ‘0-9a-zA-Z’)
=> “abc123”
“`

### 全=>半
“`rb
“123abC”.tr(‘0-9a-zA-Z’, ‘0-9a-zA-Z’)
=> “123abC”
“`

## カタカナ
### 全=>半
“`rb
require ‘nkf’

NKF.nkf(‘-w -x -Z4’, ‘イロハ’)
=> “イロハ”
“`

### 半=>全
“`rb
NKF.nkf(“-w -X”, “イロハ”)
=> “イロハ”
“`

# `OR`検索
こんなレコードがあると仮定します

“`js
#

元記事を表示

Rails 長い文字列を省略する方法

文字数が多くなると
当然横に大きく膨れてきます。
そこで制御するメソッドを書き記しておきます。

## truncateとは
文字数を切り捨て表示する

##参考資料
https://railsdoc.com/page/truncate

“`java:app/viwes/hoge/index.html.erb
<%= "1234567890".truncate(5) %>
表示
12345…
“`

`truncate`を使用することで文字数が制御できます!

元記事を表示

[未経験からエンジニア転職成功]ポートフォリオ

#はじめに

今回は、2021年3月に転職活動が終了した際の僕のポートフォリオについて下記の方に向けて解説します。

“`ruby
・転職活動中の方
・プログラミング学習中の方
“`

そこで、まずは僕自身のことをお話させていただくと、2021年1月下旬にテックキャンプを卒業し、3月下旬(ここ最近)に自社開発+受託開発+SESをしている企業様に内定をいただきました。

また、それ以外にも`12社からスカウトされ、そのうちの4社が自社開発系の企業様で1社は東証一部上場の企業様からのスカウト`でした。

#使用技術

– HTML/CSS
– Bootstrap
– JavaScript/jQuery/Ajax
– Ruby 2.6.5
– Rails 6.0.0
– MySQL 5.6.50
– Nginx(Web Server)
– Unicorn(Application Server)
– Docker 20.10.0
– docker-compose 1.27.4
– CircleCI(CI/CD)
– Capistrano
– AWS EC2 (Amazon Linux2)/

元記事を表示

(Rails)画像投稿機能[refile refile-mini_magick]

#前提

– `ImageMagick`インストールしておいてください

“`ruby:Gemfile
gem “refile”, require: “refile/rails”, github: ‘manfe/refile’
gem “refile-mini_magick”
“`
Gemfileに記述後
`$ bundle install`します。

“`ruby:

画像投稿フォーム

<%= form_with model: @post, local:true do |f| %>

画像

<%= f.attachment_field :image %>
<%= f.submit '投稿' %>
<% end %>
“`
`f.attachment_field`使うことで投稿できるようになります。
#modelを追加
“`ruby:post.rb
attachment :image
“`
`_id`を抜いた部分を記述します。

#画像表示
“`ruby:posts/show.html.erb
<%= attachmen

元記事を表示

[Rails]CSV生成処理をモデルで書いてるけどそれって正しいの?

# 概要

CSV生成処理をモデル側で書いてる案件をよく見ます。
※実際にはエスケープ処理なども必要ですが、今回は簡略化してます。

“`ruby:app/models/user.rb
class User < ApplicationRecord def self.build_csv csv = ["氏名,ニックネーム,電話番号"] all.map do |user| row = "#{user.full_name},#{user.nickname},#{user.phone_number}" csv << row end csv.join('\n') end end ``` 今回は↑の設計に疑問を投げかける投稿です。 # これの何処が問題なの? 自分なりに、上記の様なCSV生成処理をモデル側で書く設計の違和感について解説していきます。 ### MVC の観点から見た違和感 Rails は MVC モデルのフレームワークです。 MVC において、クライアントへの最終的な出力はViewの役割であり、今回のケース

元記事を表示

OTHERカテゴリの最新記事