Rails関連のことを調べてみた2019年11月05日

Rails関連のことを調べてみた2019年11月05日

autodoc to swagger

誰かいいライブラリをください。
自作中
https://github.com/kajirikajiri/parse
リクエスト、レスポンスが表示されるくらいの完成度を目指す
rspec実行したら、swaggerが出力されるみたいな、、探したけど見つけれない

元記事を表示

【Rails】image_tagの基本とデフォルト画像の設定方法

#image_tagの基本
image_tagはRailsで用意されている、HTMLのタグを生成するためのメソッドになります。
画像をページに表示させたい時に使用します。

構文は下記の通りです。

“`
image_tag(source, options = {})
“`
sourceの部分には画像がある場所を記述し、optionsにはclass名やalt属性を指定します。

※alt属性とは何かは、こちらのリンクでご確認ください。簡単に説明すると、画像が何らかの原因で表示されない時に、代わりに表示される文字になります。
[alt属性とは](https://www.seohacks.net/basic/terms/alt/)

クラス名とalt属性を使用すると下記のようになります。

“`
image_tag ‘icons/cat.jpg’, :class=”cat-icon”, :alt => ‘猫の画像’
“`
ちなみにerbファイルに記述する際は<%= %>で囲んであげる必要があります。

“`
<%= image_tag 'icons/cat.jpg',

元記事を表示

【RDB設計】RailsアプリDB設計における制約について

簡単なブログアプリを作ってるんすが、データベース設計の際に必要になりそうなものがあったので、
手早くまとめます。

意外と検索してもヒットしなかったんだこれが。

制約とは

制約とは特定のデータの保存を許さないためのバリデーションです。例えば同じメールアドレスのユーザーを登録できないようにする、名前のデータが空のユーザーを保存できないようにするといったことができるようになります。

RubyOnRailsの場合だと、rails g model [テーブル名(単数形)]をターミナルで打ち込むと、マイグレーションファイルが出来上がります。

このファイルにカラムの指定をした後、rake db:migrateすることでデータベースにカラムが反映されます。

制約はこのカラム一つ一つに対して使います。

NOT NULL制約

NOT NULL制約を設定すると、そのカラムの値にはNULL(空の値)を入れることができなくなります。

ブログアプリの場合でしたらユーザー登録が必要になるので、ユーザー登録の際のEmailやパスワード、nameなんかが対象になります。

元記事を表示

rails-備忘録:データ型

豆知識の備忘録です。

# データ型
基本データベース作成にはデータ型を指定します。

**種類**
 string : 名前、電話番号など短い文字列
 text : コメントなどかなり長い文字列
 integer: 数字など(小数点なし)
など多用しています。

他にも
float 浮動小数点数型
decimal 固定長整数型
datetime 日時
timestamp 更新時間
time 時刻
date 日付
binary バイナリ文字列型
boolean 真偽値
references 他のテーブルへの外部キーの定義、_id が付いた整数
があります。

元記事を表示

【circleCI】rails5.2/Capistrano/CICD環境によるAWSへの自動デプロイ

## 概要
railsでアプリ作って、capistranoでAWSに自動デプロイして、circleCIでgithubへのpushごとにテストコードを走らせるようにしました。
ここまできたらやるっきゃないっしょ!ってことでcircleCIによるCD環境も構築してみました。

## 前回記事

この記事の続きです。事前に読んどいてね。
[RailsにcircleCIを構築し、githubと連携してrubocopとrspecテストを走らせる](https://qiita.com/AK4747471/items/b2161784065f21cd1645)

## 前提条件
・Rails5.2
・capistranoを使った自動デプロイを構築できている
・circleCIとgithubを連携させて自動テストまでは実装できている

circleCIのセッティングについては他フレームワークでも共通概念として使えたりしますが、Rails5.1(だったかな?)以降ではmaster.keyを使ったcredentials系の概念が絡んできたりするので一応Railsを前提条件に加えときました。

## 参考

元記事を表示

railsのエラー: データベースの名前

railsのエラーの備忘録です。

# カラム名では予約後は使えない
railsでは予約語が設定されておりシステム上使えないことになっています。
エラー内容はこんな感じで

ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: ‘news’. This error is raised because the column ‘type’ is reserved for storing the class in case of inheritance. Please rename this column if you didn’t intend it to be used for storing the inheritance class or overwrite Site.inheritance_column to use another column for that information.):
app/controllers/site

元記事を表示

RailsでAjaxを使う場合にredirect_to modelではなく@modelにする理由

# Postの操作を画面遷移からAjax操作に書き換える
Railsチュートリアル14章で、Ajax操作を実装したために上のコードを下のコードへと書き換える下りがある。

“`ruby:app/controllers/relationships_controller.rb
  redirect_to user

“`

“`ruby:app/controllers/relationships_controller.rb
respond_to do |format|
format.html { redirect_to @user }
format.js
end
“`

これは、Twitterのようなアプリを作成するとして特定のユーザーをフォローした後に、そのユーザーの画面を再表示するためにリダイレクトする処理となる。

### Railsチュートリアルでの説明
下のコードを実装したために、インスタンス変数が必要になるというのが理由と書かれているが、いまひとつ腑に落ちないのではないか

“`erb:app/views/users/_fol

元記事を表示

<〇〇::ActiveRecord_Associations_CollectionProxy:××××××××××××××××>が得られてしまった時の対策

データベースから特定の情報を抜き出してviewで見た時に以下が出てガッカリした時の対策を備忘録として記載します。

“`
<〇〇::ActiveRecord_Associations_CollectionProxy:××××××××××××××××>
“`

どうやらこれは取ってきたインスタンスの外側部分の表示で、肝心の中身ではないご様子。
(以下で言うとaaaの部分が表示されている?)

[例]
  aaa = bbb.New(attribute)

<〇〇::Activ~>を生み出している変数に対してeachメソッドを当ててあげると中身だけが取り出される。
たとえばitem.imagesで出てきてしまった場合は

“`
// haml で書いた場合
– item.images.each do |image|
– result = image.image_url
= result
“`
これでインスタンス内のimage_urlの値が取り出せる。

# もっといいやり方があればご教示ください。

元記事を表示

【備忘録】rails g controller でcoffeeの代わりにjavascriptを生成する

### 前置き
CoffeeScriptを使う予定がない。でもJavaScriptは使いたい。

rails g controller –no-assetsして、ファイルを手動で作成して…
やらなんやらするのが面倒な人向け。

### 環境
Rails 5.0.7.2
ruby 2.3.3

### 編集内容
以下ファイル内でApplication下に記述
javascript_engineで設定します。

“`ruby:config/application.rb
class Application < Rails::Application config.generators do |g| g.javascript_engine :js end end ``` これで出来た! [参考にした資料(StackOverFlow)](https://stackoverflow.com/questions/24232570/how-to-configure-rails-3-2-4-to-generate-js-instead-of-js-coffee-by-def

元記事を表示

Railsチュートリアル 第8章 基本的なログイン機構 – ログアウト

# ログアウト

## 前提条件

現在開発中のサンプルアプリケーションは、「ユーザーが明示的にログアウトするまではログイン状態を保つ」という仕様になっています。一方現状では、「ユーザーが明示的にログアウトする」という機能が実装されていません。

一方で、ログアウト機能の実装の前提となる以下の要素は既に実装済みです。

* ログイン済みユーザー用ページの内容ヘッダー部における、ログアウト用のリンク
* `logout_path`への`DELETE`リクエストに対する、`sessions#destroy`へのルーティング
* Sessionsコントローラにおける、`destroy`アクションそのものの定義

これから新たに実装が必要になるのは、「Sessionsコントローラにおける、`destroy`アクションの実際の動作」ということになります。

## `session.delete`メソッド

セッションから情報を削除するために用いるメソッドです。今回削除するのはユーザーIDなので、引数として`:user_id`シンボルを取ります。

“`ruby:
session.delete(

元記事を表示

alias(エイリアス) の設定の仕方

bash の場合は、基本的に `~/.bash_profile`、
zshの場合は `~/.zshrc` に記述するのがスタンダードです。

試しに登録してみましょう。(zshの場合)
`$ vim ~/.zshrc`

以下のような記述を追記します(これは例ですので、自分の好きに登録してOKです)。

“`
alias gs=”git status”
alias gd=”git diff”
alias gc=”git checkout”
alias gb=”git branch”
alias gl=”git log”
alias rs=“rails s”
alias rc=“rails c”
“`

で、

`$ source ~/.zshrc`
を実行すると、使えるようになる。

元記事を表示

犬でもわかるRuby on Rails 環境構築 for MacOS

##はじめに
Rubyに関してだけでなくプログラミング初学者の文章であるため誤りがあればご指摘いただきたいです。
RailsはRailsチュートリアルに一通り目を通したレベルです(理解したとは言ってない)
チュートリアルではcloud9を使っていましたがvscodeに乗り換えたいので、ローカル環境構築に挑みながら記事にまとめます。
私は犬なので難しいことはわかりませんし、難しいことの解説は他の方にお任せします。(免責事項)
当手順は個人が見返すための書き物である側面が強く、
参考にしたことによってプロジェクトが破壊されても当方は責任を負えません。悪しからず。

##著者環境
– macOS Catalina ver 10.15
– MacBook Pro (15-inch, 2017)
– 2.9 GHz クアッドコアIntel Core i7
– メモリ16 GB

##構築していくワンU・ω・U(激寒)

###Homebrew
Homebrewという色々なものを簡単に導入できるようになる便利アイテムがあります。
多分必須クラスのアイテムなのでインストールされているかどうか確認し

元記事を表示

デプロイしたRailsにアクセスできない This site can’t be reached

## 概要
突貫でRailsアプリを作らないといけない状況で、
自身が開発した既存のRailsアプリを丸コピしてからそれをベースにアプリを構築。

そしてAWSのOpsWorksでいつもどおりデプロイ。
正常にデプロイできいざ確認と思ったらアクセスできない。

数十秒後に「This site can’t be reached」(Chromeのメッセージ)が表示される。

原因がわからず無駄に時間を浪費したので、備忘録として解決策を記載する。

## 原因
原因は `config.force_ssl = true` にしていたことでした。
確認段階だったので、ドメインやSSL証明書の設定などはなく、
起動したインスタンスのIPに直接アクセスする形をとっていた。

なので、RailsがSSL強制しようにもできず、
リダイレクトを繰り返していたという状況でした。

## 解決策
`config.force_ssl = false` にすることで解決できました。

元記事を表示

Vagrant+Rails6+MySQL 開発環境構築

# はじめに
– なんか網羅したような題名にしましたが、以前書いた「Vagrant+Rails6+PostgreSQL12 開発環境構築 まとめ」のMySQL版です。
– [「Vagrant+Rails6+PostgreSQL12 開発環境構築 まとめ」**2.9 PostgreSQLインストール**](https://qiita.com/KZ-taran/items/56c1d39dbbdd26df6faf#29-postgresqlインストール)の部分の差し替えなので、それ以外の部分はそちらを参考にしてください。

# MySQLインストール
## MySQLインストール

“`sh
# MySQLのyumリポジトリから、最新のCentOS7用のリポジトリを追加
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# MySQL Community Serverのインストール
$ sudo yum -y install mysql-commun

元記事を表示

RailsでActionView::MissingTemplateエラーが発生した場合の対応

## 現象

Railsで500エラーが発生し、エラーログにはActionView::MissingTemplateと書かれていました。
media/ads/show.erbは存在し、これまで問題なく表示できていたURLだったので、なぜ??となりました。

エラーログの:formats=>[“image/*”]を見る限り画像のテンプレートを探しに行ってしまっているようなのですが、URLに`.png`や`.jpg`などの拡張子が付いている訳でもありませんでした。

“`
ActionView::MissingTemplate (Missing template media/ads/show, media/application/show, application/show with {:locale=>[:ja], :formats=>[“image/*”], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
“`

## 結論

acce

元記事を表示

【Rails】RSpecのSystem Test実行前に前回テスト時のScreenshotを削除しておく

# Abstract
RSpec3.8以降のSystem Testは特に気にせずともテストNG時にscreenshotを保存してくれる。
とても便利なのだけど、ほっておくとscreenshotがいっぱいになり、いざ今回のテストで失敗した箇所を探そうとしても埋もれてしまうことがある。

いちいち`rm`を打ってから`rspec`するのも面倒なので、
今回は、RailsでRSpecを実行する時に、前回までのscreenshotを自動で削除するようにするメモ。

ベースアプリは –> [Rails on Docker(alpine)でdocker-seleniumを使わないでSelenium+RSpec+Capybaraでテスト自動化してみる – Qiita](https://qiita.com/at-946/items/6def89bb94f748ad97f2)

# 注意事項
1回ファイルパスを間違えて、rspec実行したら全てのファイルが消えた、という事件が起きたので注意してください…gitから戻せたのでよかったですが…

# FileUtilsを使う
Rub

元記事を表示

SlimでHTML5のフォームバリデーションを使う

Ruby on Railsのテンプレートエンジンとしてslimを使った場合のHTML5の入力値チェックの書き方を調べてみました。

## 対象
Rails、slimの初学者

## 環境
– Ruby on Rails 5.2.3
– slim 4.0.1
– Bootstrap 4.3.1(以下の例はBootstrapを適用したformです)

## 入力値チェック/制限方法
### required属性による入力必須制約
以下のように`required: true`を追加します。

“`bash:required属性
= form_with model: user, local: true do |f|
.form-group
= f.label :name
= f.text_field :name, class: ‘form-control’, required: true
“`
### pattern属性による入力値のパターン制約
以下のように`pattern: `を追加します。

“`bash:pattern属性
= form_with model: us

元記事を表示

Railsのcreateメソッドは保存に成功しても、失敗してもモデルオブジェクトを返す

Railsのcreateメソッドは、オブジェクトの作成と保存を同時に実行できます。
注意点として、createメソッドは保存に成功しても、失敗してもモデルオブジェクトを返すので、saveメソッドのようにif文で保存成功可否を判定しようとすると、どちらの場合も必ず真になります。

# 環境
“`
$ rails -v
Rails 5.1.7
“`

# 検証
Userモデルの保存時に、nameを必須にします。

“`ruby:user.rb
class User < ApplicationRecord validates :name, presence: true end ``` createメソッドは保存に成功しても、失敗してもモデルオブジェクトを返します。 ```ruby # 保存成功 User.create(name: "testuser") => #

# 保存失

元記事を表示

【Docker】構築したrailsイメージの軽量化

## 概要
先日Railsアプリの開発環境にDockerを導入しました。
しかし[入門Dokcer](https://y-ohgi.com/introduction-docker/2_component/image/)を見てみると、どうやら記述方法次第や指定するイメージによって軽量化できるとのこと

## Dockerの設定記事
先日僕が書いて投稿した記事の中で出てくるDockerfileを参考に書いていくので、一度目を通しておいてください。
[作成したRailsアプリケーションでDocker環境構築](https://qiita.com/AK4747471/items/39ddacfde6a235103277)

## Dockerのイメージを軽量化するメリット
僕は業務未経験なので[参考書](https://www.amazon.co.jp/Docker-Kubernetes-%E5%AE%9F%E8%B7%B5%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E5%B1%B1%E7%

元記事を表示

ドットインストールのRuby on Rails 5 入門を履修する際に自身が体験したエラーの一例集

#初投稿にあたって

 初投稿がいきなり失敗談から入る点やドットインストールのRubyの入門の項目を無視していきなりRuby on Railsの項目から入る点などツッコミどころはたくさんあるとは思いますが、どうかご容赦ください。

#今回の投稿の理由
 とりあえずの初投稿ではありますが、今回の投稿の目的としては

・Qiitaへの投稿に慣れるための第一歩の練習としての投稿
・単純に備忘録として初心を忘れないようにメモしておきたかった
・失敗談を共有することである程度他者の参考になればという思い

 以上の点で記録を公開しようと思いました。

 自己紹介の記事がまだ無かったりプロフィール等が充実して居なかったりでどういう人物かも分かりにくいだろうとは思いますが、自分は今年の6月頃からRuby、HTML、CSSなどをドットインストールやProgateなどで学び始めたプログラミング勉強歴2ヶ月目の初学者だという認識で見てもらえればと思います。

 ではいきなりではありますが、早速以下よりエラーのパターンと自身が経験したその解決策の一例を挙げていきたいと思います。初心者ゆえ至らぬ点や言葉足ら

元記事を表示

OTHERカテゴリの最新記事