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

Rails関連のことを調べてみた2019年12月14日
目次

Ruby on Railsでの良い書き方について

皆さん、こんにちは。新卒のズオンです。
この記事は[Linkbal(リンクバル)Advent Calendar 2019](https://qiita.com/advent-calendar/2019/linkbal)の14日目の記事です。
今回はRuby on Railsでの良い書き方を紹介します。 おそらく多くの人が既にこれらの書き方について知っていますが、私にとっては非常に便利だと思うので皆と共有したいです。 皆様からの提案をお待ちしております。 始めましょう。:smile:

##Hash

####dig
私たちはほとんどしばしばこのように書きます:

“`ruby
if users[:id] && users[:id][:age] && users[:id][:age][:address]

end
“`
`Hash#Dig`を使用すると、`nil`参照を心配することなくて簡単に動的にアクセスできます。 この書き方が短くて、結果は変わりません。

“`ruby
if user.dig :id, :age, :address

end
“`
##

元記事を表示

【Rails】オブジェクト指向について

# はじめに
Rubyに最初に触れる方はオブジェクト指向という言葉はよく聞くけれどいまいち何のことを言っているかわからないという人も多いと思います。なので、このオブジェクト指向について自分の思考の整理も兼ねて記事にしました。
ちなみにオブジェクト指向はRuby以外にもjava,phpなどにも用いられる概念です。

# オブジェクト指向とは
簡単にいうとオブジェクト指向とはオブジェクトを中心に回り、複数のオブジェクトを組み合わせることでプログラムを構築していくという考え方のことです。
###オブジェクトとは
オブジェクトとはデータや処理の集まりのことを指します。
ただし闇雲なデータや処理が集まったものではなく、**一つのテーマの下**で集まったものです。
イメージとしては、オブジェクトというのは概念のようなものではクラスとインスタンスによってできているという感じです。
またオブジェクトは振る舞いというものを持っています。振る舞いとは自分自身に対する操作のことで、
仮にAさんとBさんという別々のオブジェクトがいた場合に、名前を教えてと言うと、Aさんは「私はAです」、Bさんは「私はBです」と

元記事を表示

rails 新規アプリ作成時:Mysqlにてbundle exec rake db:createが上手くいかない解決記録

rails 新規アプリ作成時に、Mysqlにてbundle exec rake db:createが上手くいかない解決記録(自分用)

“`
① bundle exec rails new アプリ名 . -B -d mysql –skip-test –skip-coffee
“`

“`
② bundle exec rake db:create
“`

error文、
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

色々試し、不要なコマンドは実行したと思われるが、次回はここから行う。

“`
$ ① mysql.server start

 ② $ bundle exec rake db:create RAILE_ENV=development
“`

####*rake aborted!
#####No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb,

元記事を表示

【ポートフォリオ】UROGを開発しました

#どんなアプリを作ったか – 概要

カテゴリー毎にURLを分けて保存できるメモアプリです。
https://www.urog.me/
![00bcn-u0lm8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407892/43d60069-f80e-b258-b20c-e46309b130a4.gif)

お試しで利用したい方は、以下のemail,passwordを使ってみてください。
(もちろん新しくユーザー登録も可能です)

“`
email: aaaaa@email.com
password: aaaaaaaa
“`

github:https://github.com/koao123/urog_app

##アプリ・筆者についての解説

使用言語・フレームワーク:Ruby・Rails・HTML・CSS・BOOTSTRAP
使用ツール: github, heroku, AWS(cloud9)

開発期間:2ヶ月
勉強期間:半年

##このアプリでできること
ユーザー登録

元記事を表示

ActiveModelでenumを使いたい

`ActiveModel::Model`をincludeしたクラスにenumを使いたい場面が出てきたけども、
ActiveRecordしか使えなさそうだったのと、検索しても出てこなかったので、
moduleを作成しました。
`ActiveModel::Attributes`を使うので`rails 5.2`以上の環境です。
未検証ですがそれ以下でも一応動くかもしれないです。

やっつけで作っているので、
enumで生成されるメソッドやオプション全てをカバーしていないのと、integerの項目にしか使えないです。

“`rb:app/models/concerns/active_model/enum.rb
# frozen_string_literal: true

# ActiveModel::Attributesのattributeでenumを利用可能にするモジュール
# ただしintegerにしか使えない
# enum_helpのgemと同様に#{attribute}_i18nメソッドも追加する
module ActiveModel
module Enum
extend

元記事を表示

[Ruby on Rails5 アプリケーション プログラミング]学習ログ#3[2019/12/13]

**前回 -> [[Ruby on Rails5 アプリケーション プログラミング]学習ログ#2[2019/12/12]](https://qiita.com/CAD-guest01/items/0d8a89a724c588f8ec3f)**
**次回 -> [[Ruby on Rails5 アプリケーション プログラミング]学習ログ#4[2019/12/14]]**


#目的
### Progateで学んだことをローカル環境で手を動かして復習することで、基礎を固める

#使用する教材
###山田祥寛(2017). RubyonRails5 アプリケーションプログラミング 株式会社技術評論社

#Q.「RubyonRails5 アプリケーションプログラミング」とは?
#A.ProgateのRoRコースを終えた後にするRoRの勉強としておすすめされている本

出典
(Samurai Blog / Ruby on Rails学習本おすすめ6選【入門者〜上級者までレベル別に解説】)[https://www.sejuku.net/blog/110292]


#今日したこと
##

元記事を表示

Rails+RSpec+DatabaseCleanerでテストをするとローカルは通るのにCIで落ちる

この記事は信州大学kstmアドベントカレンダー2019の13日目の記事です(遅くなってごめんなさい)。

丁度タイムリーにつまずいていることがあったのでそれをまとめ、ここに残すこととします。
参考リポジトリは [arsley/circleci-databasecleaner-experiment](https://github.com/arsley/circleci-databasecleaner-experiment) です。

## :mount_fuji: 環境

– macOS Mojave 10.14.6
– Docker Desktop 2.1.0.5

### その他使うgem

– RSpec
– DatabaseCleaner
– FactoryBot

## :iphone: サンプルアプリとテストについて

### アプリの概要

– 書き手 `Author` とその本 `Book`
– 書き手は出版した本をたくさん持つ `Author has_many Books`
– 本には必ず書き手が必要 `Book belongs_to Author`

### テストの

元記事を表示

Railsアプリ開発の事前準備を三分で終わらせる

#背景
Railsのアプリの開発を始めるときに、すぐにアプリの本格的な開発に入れるように、余計な説明抜きで基本的にターミナルのコマンド操作の流れだけを記録したいと思った。

#前提
railsのバージョンは5.2.1。アプリの起動までをゴールとする。

#1.アプリの作成

“`
#アプリを作製するディレクトリに移動
$ cd ~/environment
#Railsのバージョンを5.2.1に設定し、mysqlを使用することを宣言
$ rails _5.2.1_ new profy -d mysql
“`

#2.mysqlサーバー、アパッチの起動
“`
$ sudo service mysqld start
$ sudo service httpd start
“`

#3.必要なGemの導入
今回はデフォルトのgemに加えて下記の4つのgemを追加。

“`ruby:Gemfile
gem ‘pry-rails’
gem ‘devise’
gem ‘therubyracer’
gem ‘jquery-rails’
“`

bundle installを忘れずに

“`

元記事を表示

【Rails6】(送信時のリロード無し!)Action CableでSlack風チャットアプリを作成

Railsの学習をされた方なら誰しも一度は作ったであろう**Twitterの簡易クローンアプリ**。最初に実装したときは大変でした:sweat:

この記事では, **Action Cable** を利用して, **Slack** のようなリアルタイムチャットアプリの作成方法,さらに Javascript でいろいろな機能を付けるところまでを解説します!

なお, Action Cable を扱う多くのチャットアプリ記事では,**メッセージ送信時にリロードが発生**しますが,この記事では**送信も非同期で行える**ように設計します。

容量制限の都合で見づらいですが,こちらが完成後のチャットアプリです。

![chat_app.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431142/2c8ac242-a

元記事を表示

Fast JSON API の Serializer で定義したキーから任意のキーを指定して使う

### 概要
Ruby 向け JSON:API シリアライザー である Fast JSON API を使用して json を生成する際に、Serializer で定義したキーのうち一部のものだけ指定して使いたいときの話。

### 前提

以下のような Serializer が定義されているとする。

“`rb
class PostSerializer
include FastJsonapi::ObjectSerializer

belongs_to :user
attributes :title, :content, :created_at
end
“`

“`rb
class PostSerializer
include FastJsonapi::ObjectSerializer

atrributes :name, :birth_date
end
“`

### 手順
上記の Serializer を使って json を生成する処理は以下の通り。

“`rb
@posts = Post.all
PostSerializer.new(@posts

元記事を表示

NameErrorでやられた話(超初学者)

#・とあるRailsの教材を使って掲示板アプリを作っているときにどつぼにはまった超初学者エラーの話です。

####~投稿者のスペック~
・プログラミング歴2ヶ月
・ポンコツです

先週からRailsの勉強をスタートし掲示板アプリ作成が順調に制作が進んでいました。(ほとんど理解できていない)

掲示板の投稿に対してのコメント削除を実装しているときにやつが飛んできました。

スクリーンショット 2019-12-13 14.02.22.png

???ネームエラー?”syntax error”の仲間か!と勝手に解釈。

これまでにも何度も”syntax error”に出くわしていたのでちょろいなと思い該当のCommentControllerをチェック

スクリー</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>Rails</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/KOUICH1039/items/b30c3497bf1275930b10'>元記事を表示</a></div>
<h3 id=某フリーマーケットサイトのヘッダーを作成するために学習した事

#1 fontawesomeの導入に関して
以下の手順で導入

“`GEMFILE.
gem ‘font-awesome-sass’
“`

“`ターミナル.
bundle install
“`

“`app/assets/stylesheets/application.css.scss
@import “font-awesome-sprockets”;
@import “font-awesome”;
“`
上記を実施したとしてもapp/assets/stylesheets/application.cssが存在する場合にはこちらが優先されて読み込まれることにより反映されないことに注意する必要がある。

使用例)

“`index.html.haml
= icon(‘fas’, ‘list’, class: ‘aaa’)
“`
第一引数のfas部分に関しては使用アイコンによりfarを使用する加藤が異なるところに留意する必要がある。また、第二引数のlist部分に関してはアイコンの種類の選択、第三引数部分に関してはclassを指定することで任意のクラスを入力することができる。

元記事を表示

コードレビュー補助ツール(RuboCop)

#書いてあること

– コードレビューツールとは

1.RuboCop導入
2.RuboCop実行
3.参考ページ
4.終わりに

#コードレビューツールとは
コードレビューツールとは、文法・バグ・コーディングスタイルを自動で分析するツールのことを指します。

##1.RuboCop導入

**RuboCopとは**
「インデントが揃っていない」 「無駄な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれる。
レビューに掛かる時間が減る。
.rubocop.todo.ymlから違反を消しrubocopを実行 → 修正という流れで進めていく。

**導入**
Gemfileに下記を追加

“`ruby:Gemfile
#省略
group :development do
#省略
gem ‘better_errors’
gem ‘binding_of_caller’
gem ‘bullet’
 gem ‘rubocop-rails’, require: false⭐︎12/13更新
(#前の書き方 gem ‘rubocop’, requir

元記事を表示

jQueryが無効なRailsでDeviseのサインアウト(GETメソッド)を定義する

こんな感じ

“`ruby:config/routes.rb
Rails.application.routes.draw do
root ‘page#index’
devise_for :users do
end
devise_scope :user do
get ‘/users/sign_out’ => ‘devise/sessions#destroy’
end
end
“`

いつの間にかdevice_scopeというメソッドができていた。
– [Method: ActionDispatch::Routing::Mapper\#devise\_for
](https://www.rubydoc.info/github/plataformatec/devise/master/ActionDispatch/Routing/Mapper%3Adevise_for)

“`ruby
devise_for :users, skip: :all
“`

とやると“`devise_scope“`で取捨選択して定義できる模様

元記事を表示

An error occurred while installing eventmachine (1.2.7), and Bundler cannot continue. Make sure that `gem install eventmachine -v ‘1.2.7’ –source ‘https://rubygems.org/’` succeeds before bundling.

新しい端末で新しい環境を構築していく際に`eventmachine`というGemでタイトルのエラーが出て約2日悩まされたのでまとめていきます。
ちなみに今までOSアップデートでmacOSを使っていたためこの手の問題は無かったです。

## 環境

MacBookPro Mojave – macOS 10.14.6

## 事象

“`
$ bundle install

Installing eventmachine 1.2.7 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /private/var/folders/p8/37pd2jf119jd4tlmf0nm85kw0000gn/T/bundler20191213-83767-sh7gkueventmachine-1.2.7/gems/eventmachine-1.2.7/ext
/System/Library/Frameworks/Ruby

元記事を表示

CRUDとは

# CRUDとはなにか
**CRUD**とはデータベースの基本的な処理を表しています。
`create`、`read`、`update`、`delete`,それぞれの頭文字をとった造語になります。
それぞれの処理は以下のようになります。

| 言葉 | 意味 |
|:—————–|——————:|
| create | 新規に作成する |
| read | データを読み込む、選択する |
| update | 更新する |
| delete | 削除する |

webアプリに使われる多くのフレームワークに採用されています。
RailsもCRUDを使ったフレームワークの一つになります。

元記事を表示

collection_check_boxesの作り方

hamlを使ってransackとcollection_check_boxesを使った検索機能を実装しました。
その際属性付けなどに苦労したので記事にします。

“`ruby:complex-search.haml
= s.collection_check_boxes :status_in, @statuses, :first, :second do |b|
  .search-box-left
   = b.check_box
   = b.label { b.text }
“`
それぞれのコードを分解して説明

“`
= b.check_box
“`
= b.check_boxで以下のようなチェックボックスを画面上に表示
スクリーンショット 2019-12-13 10.52.25.pngストロングパラメーターとは

# ストロングパラメーターについて
フォームから値を送信したいのにDBに保存されない・・・
そんなときにみるポイントの一つが**ストロングパラメーター**です。

ストロングパラメーターとはざっくりいうとセキュリティーのことです。
まず、ビューのフォームで入力された値は`params`でコントローラーに送られます。
その際に許可していない不正の`params`を受け取らないようにするのがストロングパラメーターになります。
メリットとして、意図しないデータを受け取らないようにできることや、管理者のみ変更できるデータの変更を外部から変更されることを防ぐなどがあります。

以下、ストロングパラメーター例文

“`tweets_controller.rb
def tweet_params
params.require(:tweet).permit(:text,:image)
end
“`

今回は`tweets_params`というメソッドでストロングパラメーターを定義しています。
`require`の部分で何の値を受け取るのか、
`permit`は`require`で指定

元記事を表示

Rails5.2で色々やってみる

宮崎勉強会 Advent Calendar 15日目の記事です。勉強会の中では年上の方なので、「枯れた」技術の良さを再確認するという主旨で、私の好きなRubyとRails、そのオススメのgemを幾つか紹介します。(本当はRails6の新機能を紹介する記事を書くつもりでいたんですが、環境構築で手こずって路線変更しています。6を使いたいけど、まだ導入のハードルが高かった…)

今回使用するRailsのバージョンは5.2.4です。vagrant上に構築したUbuntuでコマンドを実行しています。

“`bash

$ rails -v
Rails 5.2.4
“`

まずは、新しいプロジェクトを作成します。今回は `wiki` という名前にしました。生成されたプロジェクトのディレクトリに入って、データベースの初期化とサーバの立ち上げもします。PostgreSQLを指定しているのは、このあとherokuというプラットフォームに載せてみようとしてるからです。

“`bash
rails new wiki –database=postgresql
cd wiki/
rails db:cre

元記事を表示

Unicorn導入後本番環境でRailsを起動してもアクセスできなかった時、tail -fコマンドが便利だった

## はじめに
グループ開発でデプロイ担当になった自分が、アプリケーションをAWSのEC2サーバにデプロイ中に発生した問題と解決できた方法についての話です。

##問題発生経緯
– AWSでEC2インスタンスの生成やポートは設定済み。
– ec2-userでログインしてRubyやRails、MySQLなどは一通り導入・設定済み。
– Railsを起動すべくUnicornをインストール。GitHubへのSSH鍵の設定を始め、個人課題でデプロイした時を参考にデプロイ作業を進める。
– 設定が終わってEC2サーバでRailsを起動。ブラウザに本番環境のURLを入れると以下のエラーが出た。

01エラー画面.png

##確認したこと
Unicornのエラーログを確認した。
less log/unicorn.stderr.

元記事を表示

OTHERカテゴリの最新記事