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

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

ActiveSupport::Callbackを使うのをやめろ

タイトルは1年ちょっと前の自分に向けた自戒なので絶対に使うのが悪というわけではない(と思う)。
だがぼくにはうまい付き合い方が見つけられそうになかったのでやめろという強い口調を意図して使っている。

## ActiveSupport::Callback is 何?

これ→[activesupport/lib/active_support/callbacks.rb](https://api.rubyonrails.org/classes/ActiveSupport/Callbacks.html)

Railsガイドにも記載されているのでRailsチュートリアル完走するかそれ相当のことをしていたら使う使わないは別にして知っているだろうと思う。

[Active Record コールバック](https://railsguides.jp/active_record_callbacks.html)

“`ruby
# サンプルでよくみるやつ
class User < ApplicationRecord after_create :send_confirm_to_user priv

元記事を表示

mac Rails6 アプリ作成時エラーとサーバスタート時のエラーまとめ

# 目的

– 筆者が最近Rails6の環境構築で詰まった部分をまとめる。

# エラー内容

“`
Traceback (most recent call last):
3: from bin/rails:8:in `


2: from bin/rails:8:in `require_relative’
1: from /Users/admin/Documents/study/ruby_on_rails/org/aquariumPlanning/config/boot.rb:4:in `
/Users/admin/Documents/study/ruby_on_rails/org/aquariumPlanning/config/boot.rb:4:in `require’: cannot load such file — bootsnap/setup (LoadError)
“`

# コマンド$rails serverで前述のエラーが出たら?

### 解決方法

– 下記コマンドを

元記事を表示

1つのテーブルの複数のカラムに外部キー制約をかける書き方 Rails 5.2

備忘録のために書きます。
(こんなケースほとんど無いだろうけど)

1つのテーブルの複数のカラムに外部キー制約をかけようとしてReferences を使おうとしたらRake abotedされました。
References を1つだけに絞ると通ったので、add_reference で強引に追加しました。

# エラーがでるパターン
“`
class CreateLikes < ActiveRecord::Migration[5.2] def change create_table :likes do |t| t.references :user, foreign_key: true t.references :item, foreign_key: true t.timestamps end end end ``` # 出ないパターン ``` class CreateLikes < ActiveRecord::Migration[5.2] def change create_table :likes do |t|

元記事を表示

ユーザー新規登録備忘録 part1:複数ページをまたいで行う新規登録の時のデータの流れ~sessionの使い方~

## やりたいこと
– 某フリマアプリにて新規登録STEP1~STEP3の3ページで入力した情報を経由してデータベースに出力する
![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487723/fe3d2916-5d57-ad78-75f4-80efd75242d5.png)

~~~rb:SignupController
def step1
@user = User.new # 新規インスタンス作成
end

def step2
# step1で入力された値をsessionに保存
session[:nick_name] = user_params[:nick_name]
session[:email] = user_params[:email]
[省略]
@user = User.new # 新規インスタンス作成
end

def step3
# step2

元記事を表示

ユーザー新規登録備忘録 part2:新規登録時のdate_selectタグとsessionの組み合わせの使い方メモ

## sessionを用いてdate_selectで取得したデータをUserテーブルに情報を送る

### 某フリマアプリでユーザー登録の際に日付のデータの情報を送れなくてつまづいたので備忘録。

![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487723/dedbb8ce-a1a0-d105-7843-97e57f23446b.png)

#### date_select部分の情報だけはuser_paramsだと日付を持っていけない!?
スクリーンショット 2019-10-30 17.42.55.png

#### paramsだったら持ってこれた!!
スクリーン</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Rails</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/kagashow0116/items/23739acd08a97842efaa'>元記事を表示</a></div>
<h3 id=Rails チュートリアル 7章 独学学習メモ

こちらは『[Railsチュートリアル](https://railstutorial.jp/chapters/beginning?version=5.1#sec-introduction)』の独学学習のメモになります。

環境について
– Macを使用
– cloud9を利用

#第7章

ユーザー登録機能を追加していきます。

##7.1 ユーザーを表示する

トピックブランチを作成します。

“`
git checkout -b sign up
“`

##7.1.1 デバッグとRails環境

– デバック情報の追加

フッターの下に、デバッグ情報の追加します。

“`
<%= debug(params) if Rails.env.development? %>
“`

追加することによって、開発環境の時だけ、デバック情報が表示されます。

– 本番環境の確認

railsサーバーは、原則開発環境が適用されます。
次のようにすれば、本番環境を確認できます。

“`
$ rails server –environment production
“`

本番環境のデータ

元記事を表示

【開発日記】薬価検索アプリno.5 〜Railsでアプリケーションの雛形作成、mySQLエラー、GitHubの設定まで〜

前回の内容はこちら。
[【開発日記】薬価検索アプリno.4 〜データベース設計〜](https://qiita.com/pharma_tech3/items/a420f8de6030856323c5)

開発背景などはこちら
[【開発日記】薬価検索アプリno.1 〜開発概要→企画〜](https://qiita.com/pharma_tech3/items/51c9a670c605098bc3bf)

##現在の進捗状況
1.必要な機能の洗い出し
2.必要な画面設計
3.データベース設計
4.Railsでアプリケーションの雛形作成 ⬅︎今ココ
5.大きな機能から順に実装
6.テストコードを書いて動作を担保する
7.リファクタリングして整理する
8.デプロイ

#いよいよ立ち上げ
やっとコードを書き始める段階にきました。
今回はrails newしてrailsを使った開発を行っていきます。

#開発環境
主な使用バージョンは以下です。

“`
ruby 2.6.5
rails 6.0.0
mysql 5.6
“`

#rails new
ターミナルで以下を実行して新規Rails

元記事を表示

コンソールで”モデル名.connection”してくれと言われた。

# “モデル名.connection”でコンソールが汚れないようにするには
カラム名を参照するとき、コンソールでモデル名を入力し確認することが多い。
`rails db:reset`した後で、いつものようにPostモデルのカラム名を参照しようとしたら、`Post.connection`してくれとのレスが返ってきた。

“`
pry(main)> Post
=> Post (call ‘Post.connection’ to establish a connection)
“`
言われた通りコンソールで`Post.connection`にすると、夥しい量のコードでコンソールが汚れる。

“`
pry(main)> Post.connection
=> #“postgresql”,
:encoding=>”unicode”,
:pool=>5, :database=>”beersh

元記事を表示

[Rails6][webpacker]CSS の擬似要素::before, ::after で Font Awesome を使うと □(四角) が表示される場合の対処法

# はじめに

Font Awesome 便利ですよね。インストールして HTML に記述するだけで簡単にアイコンを Web サイトで使えるようになります。
例えばこのように HTML を記述すれば

“`html

キラキラ

“`

こんな風に表示されます。

スクリーンショット 2019-10-30 14.50.14.png

このアイコンは CSS の擬似要素(::before, ::after)でも使用できるのですが、この時にアイコンが □(四角)で表示されてしまいました。今回はその対処法を記事にします。

# 環境

– ruby 2.6.3
– rails 6.0.0
– webpacker

元記事を表示

10月30日 学習進捗状況

# 学習
– resourcesメソッドとはRailsで定義される7つのアクションをひとまとめにしたメソッド

https://gyazo.com/da744af715a909a11bffd22a15a6a68d
↑resources:posts と記載すると上記の7つのアクション全てを記載した設定になる

– exceptオプションとは、指定したアクションに対するルーティングは生成されない
(例) resources:posts.except:index のように記載できる

上記の2つを使いこなすことで、余分なコード入力を省略することができると感じました。

– form_withメソッドとはform_tagの代わりとなるヘルパーで、主にViewファイルで使用することで簡単にフォームを使用することができるヘルパー
https://gyazo.com/eb8412b6b48ff24ed4cb144eb3e1d9e7

とはいえ、まずはform_tagの概念、使い方を理解して進めていくことが重要だと感じました。

– redirect_toメソッドとはコントローラー等での処理が終わった

元記事を表示

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

# 認証システムと認可モデル

## 認証システム(Authentification System)

以下のような仕組みのことを言います。

* Webブラウザが、ログインしている状態を保持する
* ユーザーによってWebブラウザが閉じられたら状態を破棄する

## 認可モデル(Authorization Model)

以下のような仕組みのことを言います。

* ログイン済みのユーザー(current user)だけがアクセスできるページの制御
* ログイン済みのユーザーが扱える機能の制御

## 認証システムと認可モデルを基盤として実現する機能

以下のような機能は、認証システムと認可モデルを基盤として実現される機能です。

* ログインしているユーザーのみが、ユーザー一覧のページへ移動できるようにする
* 正当なユーザーだけが自分のプロフィール情報を編集できるようにする
* 管理者だけが他のユーザーをデータベースから削除できるようにする

また、以下のような機能の実装には、「誰がログインしているのか」という情報が必須となります。

* 他のユーザーをフォローする機能
* 自分の

元記事を表示

Rails6 のちょい足しな新機能を試す101(ActionController::Paramters#transform_keys編)

# はじめに

Rails 6 に追加された新機能を試す第101段。 今回は、 `ActionController::Paramters#transform_keys` 編です。
Rails 6 では、 `transform_keys` がブロックなしで呼ばれた場合、 Enumerater オブジェクトを返すようになりました。

Ruby 2.6.5, Rails 6.0.0, Rails 5.2.3 で確認しました。

“`shell
$ rails –version
Rails 6.0.0
“`

今回は、実用的な例を思いつきませんでした。
Userの CRUD を作って確認します。 今回は、Rails 5.2.3 の動作から確認していきます。

# Rails プロジェクトを作る

“`
$ rails new rails_sandbox
cd rails_sandbox
“`

# User の CRUD を作る

“`shell
$ bin/rails g scaffold User name
“`

# データベースのマイグレーションを実行する

“`she

元記事を表示

EC2にyumでnodejsをインストールしようとしたらできなかった話

#はじめに
右も左も分からない状態で、AWSにRailsアプリをデプロイする過程で躓いたときの話
##epel(?)レポジトリが見つからないと言われエラーになる。
リポジトリが見つからないと言われる。

“`:実際のコード
[tatsuki@ip-10-0-0-85 ~]$ sudo yum install nodejs npm –enablerepo=epel
[sudo] tatsuki のパスワード:
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd

Error getting repository data for epel, repository not found
“`
##epelリポジトリをインストール
epelリポジトリインストールについて調べ、以下を実行。

“`
[tatsuki@ip-10-0-0-85 ~]$ yum -y install epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities

元記事を表示

【駆け出しWEBエンジニアのためのメモ】WEBアプリ作成の作業フロー_基礎(Rails)

#背景
最近、10年のブランクをへてプログラムを猛勉強中で、特に未経験のWEBプログラミング(Rails)に挑戦しております!

TECH::EXPERTにて基礎は学びましたが、どこか「あと少し」な感じで全体像が掴めずにいました。
全体像を把握するためにも、WEBアプリ作成の大まかな作業フローをメモさせていただきました。

※フォーム、ログインなど、他の機能は別途記事を作成いたします。
 

#WEBアプリ作成の作業フロー(概要)
①アプリの雛形作成($ rails _5.2.3_ new ディレクトリ名 -d mysql)
         ($ bundle install)
②データベース作成($ rails db:create)
③サーバー立ち上げ($ rails s)
④ブラウザでアプリケーションの状態確認( http://localhost:3000 )
⑤ルーティング作成(config/routes.rb を編集)
⑥コントローラーを作成($ rails g controller コントローラー名 で作成)
           (app/controllers/コントロ

元記事を表示

RailsにcircleCIを構築し、githubと連携してrubocopとrspecテストを走らせる

## はじめに
スクール卒業後黙々とアプリを作っているのですが、開発環境にDockerを導入したということでそのままCircleCIも導入しちゃいました。

ちなみに circleCIを導入するには少なからずDockerの知識が必要となってきます。
もしDockerってなんだよ?って人は先にDockerを開発環境に構築してみたほうがスムーズかと思います。

RailsにDockerを導入する方法は下記に書いてるので、よかったらみてね!:relaxed:

[作成したRailsアプリケーションでDocker環境構築](https://qiita.com/AK4747471/items/39ddacfde6a235103277)

## circleCIとは?
継続的インテグレーション(デリバリー)サービスです。コミットからデプロイまでのパイプラインを作成し、継続的な統合/配信を使用してソフトウェア開発プロセスを自動化できます。

ちょっと難しい用語ですね。
簡単にいうと、githubのpushに合わせて、テストコードを走らせたりしてくれます。
このさらに自動デプロイまでやってくれる環境の

元記事を表示

Devise (Warden) + Redis で管理してる Rails のセッションから特定ユーザのものを破棄する

# 何がしたいか

session_store に Redis かつ Devise で認証を管理してる Rails アプリの特定ユーザのセッションをすべて破棄したい。

# どうやるか

セッションストアから対象ユーザのセッション情報を割り出して削除すれば良い。

Railsはセッションストアに `sessions:session_id`(session_idはRailsが発行したsession_id) ってキーでセッション情報を保持する。Wardenはそのセッション情報の中に `warden.user.user.key`(そのまま)ってキーでユーザIDなどの認証情報を保持する。

“`ruby
mapping = ‘user’
user_id = 42

# Redisからすべてのセッション情報を抽出
Redis.current.keys(‘sessions:*’).select { |key|
# セッション情報の実態を取り出す
user_hash = Marshal.load(Redis.current.get(key))
# ユーザを特定
user_hash

元記事を表示

10月29日 学習進捗状況

# 学習
– ルーティングとはクライアントからのリクエストを受け取り、行き先を定義する
– コントローラーとはデータベースやビューとやり取りをし、クライアントに見た目を返す
– ビューとはクライアントに返す見た目を用意し、コントローラーとやり取りする
– モデルとは、コントローラーがデータベースとやり取りをする際の情報を処理する
– データベースとは様々な情報が保管されており、その中でもテーブルというもので情報ごとに分けて保存している
– file:///Users/tech-camp/Downloads/Rails%E3%81%AE%E5%87%A6%E7%90%86%E3%81%AE%E6%B5%81%E3%82%8C(190925).pdf

– マイグレーションファイルとはテーブルの設計図でデータベース内にテーブルを反映させる
(例)create_table:posts do |t| というような記述になる
https://gyazo.com/f3a6d59baa31d46daaa96cbefb28f3af

– Rails c でRubyのコードを書くことができるようになる。

元記事を表示

【開発日記】薬価検索アプリno.4 〜データベース設計〜

前回の内容はこちら。
[【開発日記】薬価検索アプリno.3 〜設計・画面の設計〜](https://qiita.com/pharma_tech3/items/ec93562bd49b54538da0)

開発背景などはこちら
[【開発日記】薬価検索アプリno.1 〜開発概要→企画〜](https://qiita.com/pharma_tech3/items/51c9a670c605098bc3bf)

##現在の進捗状況
1.必要な機能の洗い出し
2.必要な画面設計
3.データベース設計 ⬅︎今ココ
4.Railsでアプリケーションの雛形作成
5.大きな機能から順に実装
6.テストコードを書いて動作を担保する
7.リファクタリングして整理する
8.デプロイ

#DB設計
どうやって設計するのか、
なぜ、この段階で設計する必要があるのか、
ER図はどうやって書くのか、
これらは他の記事に譲りますね。

###大まかな手順
1.管理するデータ(エンティティ)の決定
2.データ属性を決定
3.エンティティ同士の関係性を決定(リレーション)
4.実際にテーブルとして定義する

#いざ、

元記事を表示

【駆け出しWEBエンジニアのためのメモ】オススメサイトと検索方法(Google,Railsなど)

#背景
最近、10年のブランクをへてプログラムを猛勉強中でして、特に未経験のWEBプログラミング(Rails)に挑戦しております!

やはりわからないことが多すぎて大変です^^;
聞ける人が周りにたくさんいるわけではないので、そんな時はネットで調べる必要がありますよね。

ただ、ネットには情報が溢れてますし、どの情報を参照すれば良いのか、またどのように取り出せば良いのか困ることもしばしば。

そんな中、信用度の高いオススメの情報源・WEBサイトや、知っておくと便利な検索方法について学びましたので、備忘のため、こちらにメモしておきます(TECH::EXPERTでの学びを参考にしております)。
※他にも見つけたら随時更新させていただきます。

#オススメのWEBサイト(Railsなど)
● Qiita(キータ):https://qiita.com/
本記事も掲載させていただいてる、こちらのサイトですね。
日本発の日本で最も有名なプログラマの技術情報共有コミュニティと言われております。
日本語で検索しやすいのが良いですね。
気に入った記事はストックしていつでも見れますし、熱心な方も多いので、

元記事を表示

作成したRailsアプリケーションでDocker環境構築

以前技術書を参考にアプリ開発をした時にDockerを少し触ったんだけど、今回は自分で作ったアプリケーションに導入してみたので簡単にまとめようかなと思います。

## バージョン
* Ruby(2.5.1)
* Ruby on Rails(5.2.3)
* MySQL(5.6)
* Docker(19.03.4)
* docker-compose(1.24.1)

## 参考にした記事、サイト
[入門 Docker](https://y-ohgi.com/introduction-docker/)
[既存のRailsアプリにDockerを導入する手順](https://qiita.com/kenzoukenzou104809/items/b9e716204e0cd0cea447
)
[DockerでRuby on Railsの開発をしよう](https://qiita.com/saitoeku3/items/b1aa2ae143624e551aea)

先人の方々には感謝しかないね・・・:innocent:

## 手順
* Dockerfileの作成(ruby及びrailsの環境を構築

元記事を表示

OTHERカテゴリの最新記事