Rails関連のことを調べてみた2020年01月27日

Rails関連のことを調べてみた2020年01月27日
目次

Railsチュートリアル 第7章

#デバッグ
###debugメソッド
debugメソッドとparams変数を使い、各ページにデバッグ情報が表示されるようにする。

“`html:application.html.erb


.
.
.

<%= render 'layouts/header' %>

<%= yield %>
<%= render 'layouts/footer' %>
<%= debug(params) if Rails.env.development? %>  ⇦ここに追加



“`

Railsにはテスト環境(test)、開発環境(development)、本番環境(production)の3つのデフォルト環境が用意されている。
上記では、開発環境にのみデバッグ情報を表示されるようにしている。

###debuggerメソッド
上記ではdebugメソッドを書きましたが、もっ

元記事を表示

FullCalendar 月・週・日カレンダーを表示する方法

# はじめに
FullCalendar という素晴らしい強力なライブラリを見つけました。(とても有名だと思いますが、知りませんでした・・・。)
英語のドキュメントばかりなので、日本語で誰かに役に立てばと思いまとめさせていただきました。

今回は月・週・日カレンダーのそれぞれに切り替える方法をまとめました。

#### 関連リンク
関連リンクを下記に載せておくので、必要であれば参考にしてください。。

* 【Rails】 5分でFullCalendar実装する方法
* https://qiita.com/syukan3/items/68280ce4ff45aa336363

# 前提条件

FullCalendarをアプリケーションに実装済みであること。

Railsアプリケーションで実装ができていない方は上記の記事を参考にしてみてください。
Railsを使ったことがない人でも簡単に実装することができますので、この機会にRuby と Railsをインストールして使ってみてください。

# 実装

javascript に 2箇所ほど追記をすれば実装することができます。

`

元記事を表示

Railsで短縮URL

## はじめに
みなさん、Railsライフ楽しんでいますか?
今回は短縮URLをRailsで作っていきたいと思います。
他の記事ではBitlyが使われていたりするのですが、今回はGemの[shortener](https://github.com/jpmcgrath/shortener/)を使っていきたいと思います。
では早速始めていきましょう!!!
(すごく便利です。)
## どんな感じ?

“`
http://localhost:3000/s/jsbei
“`
こんな感じになります。localhostの部分がドメインになるかと思います。なので、Bitlyに比べてサイトがわかるので、信頼性が高いと思います。
## インストール
早速インストールしていきましょう。
まずGemfileに以下のように追記してください!!!

“` Gemfile
gem ‘shortener’
“`
そして、以下をターミナルで実行しください。

“`
rails generate shortener
rails db:migrate
“`
これで、インストールは完了しました。
##ルートの設定

元記事を表示

【Rails】sorceryでパスワードリセット機能実装

# 環境
`Rails 5.2.3`
`mysql 5.7.28`
`gem sorcery`
`gem letter_opener`
`gem bootstrap` → フラッシュメッセージ使いたい方は導入してください。

# 準備
sorceryを導入してemail、パスワードログインを実装するところまで行う。
下記記事がわかりやすいです。
[シンプル認証gem sorceryを完全入門するで!!](https://qiita.com/babashunsu/items/9937b0a2e08d318edece#4-letter_opener%E3%81%AE%E8%BF%BD%E5%8A%A0)

# 実装

パスワードリセット申請をするとリセットのためのメールが届いて、メール内のリンクにアクセスするとパスワードリセット画面にとび、パスワードの更新処理を行うという実装をしていきます。

Railsでメールを送るにはAction Mailerを使います。
> Railsはメールを送るためにAction Mailerという仕組みを提供しています。メイラーはコントローラーに似ています。

元記事を表示

【Rails】【非同期通信】create.js.hamlがうまく機能しない=>create.js.erbにすることで解決

## 実装したかった機能
いいね!機能を実装しようと思い、非同期通信でいいね!を送信して結果を部分テンプレートで更新させようとしました。
具体的な流れとしては、部分テンプレートで作成したいいねボタンをクリックすることで非同期通信によりいいねの作成・削除を行い、結果に基づきいいねボタン(部分テンプレート)を更新させるという手順を想定しました。

## 開発環境
Ruby: 2.5.1
Rails: 5.2.3

## うまくいかなかったコード

### モデル
“`rb:app/models/user.rb
class User < ApplicationRecord # (中略) has_many :likes has_many :items end ``` ```rb:app/models/item.rb class Item < ApplicationRecord # (中略) has_many :likes def liked?(user) likes.where(user_id: user.id).exists? end end ``` ``

元記事を表示

Rails Minitest こんな時どうする?テストクラス毎にfixureを分けたい

# 概要
テストクラス毎にfixureを分けたい。

# 詳細

Minitestではテストデータをfixtureフォルダにyaml形式のファイルで配置しておかなければならない。yamlファイル名はモデル名であり、アプリケーション全体で1モデル=1fixutureファイルが基本である。

しかし、アプリケーションが複雑になってくると1モデル=1ファイルですべてのテストケースを網羅するようなテストデータを用意するのが難しくなることがある。そこでテストクラス毎にfixureファイルを分けることでテストケースを網羅するテストデータを用意し易くする。

# 対応

アプリケーション全体で1モデル=1ファイルを一度に読み込むようになっているのを止める。
それぞれのテストクラスで任意のfixtureを読み込むようにする。

# サンプルコード

サンプルでは2つのテストクラス book_test.rb と user_test.rb があり、それぞれのテストクラスでBookモデルのテストデータを別々のfixtureから読み込む。

アプリケーション全体で1モデル=1ファイルを一度に読み込むように

元記事を表示

Rails+Reactによるフォームの作例

[Rails+Vue.jsによるフォームの作例](https://qiita.com/kazutosato/items/38caffdbd21508a5c126)のサンプルをReactに移植してみました。

サンプルプログラムはこちら。簡単なブログアプリケーションです。masterブランチでは、Hooksを使っています。
https://github.com/kazubon/blog-rails6-react
別ブランチでは `class extends React.Component` を使ったものも作りました。
https://github.com/kazubon/blog-rails6-react/tree/extend

Rails側の作り方や全体的なポイントはVue版と同じですので、[Vue版の記事](https://qiita.com/kazutosato/items/38caffdbd21508a5c126)を参照してください。

React歴2週間ですので、ヘンなところがあればご指摘ください。

## 環境

– Rails 6.0、Webpacker 4.2、Reac

元記事を表示

Rails consoleで別のテーブルの_idとの結び付け

##今回はRailsコンソール
を使ってトークルームにカテゴリーを紐付ける際に、初歩的なミスで試行錯誤するはめになってしまったので、メモとして残したいと思います。

まずは、コンソールで入力した結果を先に表示したいと思います。

2.5.3 :001 > user = User.first
(7.5ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ‘,STRICT_ALL_TABLES’), ‘,NO_AUTO_VALUE_ON_ZERO’), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
User Load (0.2ms) SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
=> #

元記事を表示

deviseを用いたウィザード形式でユーザー新規登録機能を実装してやるって![実装方法総まとめ]

某フリマサイトのコピーサイトをチーム開発しており、deviseを用いたウィザード形式でのユーザー新規登録機能を実装しましたが、大分苦戦しました。。。
ということで、備忘録もかねて以下にまとめます!
*ページ内、クレジットカード登録のページございますが、今回はpay.jpなどのGemは使用しておりません。
単純に情報を登録するだけにしております。

#ウィザード形式とは?
そもそもウィザード形式とは、なんぞや?というところから説明します。
ウィザード形式とは、サイト利用者に一つずつ質問や設定項目を提示し、対話的に処理を進める操作方式のことを指します。
イメージとしては、以下のような感じです。
d103dd1497df787e7afc015db8e1b3cb.png

#ウィザード形式でのユーザー新規登録機能を実装

元記事を表示

実務未経験者がUdemyの講座を参考にして、RailsでInstagram風アプリを作ったので感想をまとめます

現在22歳の大学生です。就職先としてweb形自社開発企業を目指し、ポートフォリオ作成と就活を頑張っています。

今回はUdemyの講座を参考にInstagram風アプリを作成したので、感想などを書いていきます。

##参考にした教材

今回はUdemyにある「[Beautiful Ruby on Rails Apps in 30 Days & TDD – Immersive](https://www.udemy.com/course/8-beautiful-ruby-on-rails-apps-in-30-days/)」を使用しました。

こちらの教材はInstagram、Evernote、Tumblrなどの有名アプリを含めた、8つのアプリの作り方をRuby on Railsで学ぶという盛りだくさんの内容です。

しかもこの教材、**無料**です。ただその代わり、教材の内容は2014年ぐらいと少し古いです。
あと解説は英語で日本語字幕などはありません。まあ内容は難しくないので大丈夫です。

##難易度はProgate以上、Railsチュートリアル未満

Railsチュートリアルができる

元記事を表示

rails newする際のエラー(can’t find gem railties)の解決法

新しいアプリを作成する際のrails _○○○○_ new で困ったので解決法を共有します。

rails _○.○.○.○_ new app名 _○.○.○.○_ はrails -vした際のバージョンと同じにする必要があります。

私の場合ですと、rails -vをするとRails 6.0.2.1というバージョンが出てくるので、

“`rails _6.0.2.1_ new app名“`
としてあげると新しいアプリとファイルが作成されます。

元記事を表示

Railsのルーティングを支える技術 – Journeyについて

[Journey](https://github.com/rails/rails/tree/master/actionpack/lib/action_dispatch/journey)は、Railsのルーティング処理を担当するライブラリです。Rails3で導入され、大規模なアプリケーションでの処理が高速化しました。

今回は、Journeyがどのようにしてルーティング処理を行っているかを紹介します。

# TL;DR

– Railsのルーターは、ウェブから受け取ったURL(入力URL)を認識し、ルート定義と見比べマッチする処理が見つかればそれを呼び出す
– 入力URLに対応する処理を高速に探すためのライブラリがJourneyである
– Journeyはルート定義を非決定性有限オートマトン(NFA)に変換し、マッチングを行う
– Journeyは以下ステップを踏み、ルート定義をNFAに変換している
1. ルート定義URLを字句解析し、トークンに分解する
2. トークンから抽象構文木(AST)を構築する
3. ASTからNFAに変換する
– Journeyは以下ステッ

元記事を表示

【Rails】MySQL2がbundle installした時エラーになったので対処法を調べてみた

スクールの課題で`Git`からアプリをクローンし、
自身のPCで環境構築する際に`bundle install`したら、エラーを出したので、対処法を調べて見ました。
以下、エラー時の状況と対処手順です。

# エラー内容

`gem`のインストールをする為、`bundle install`を行ったところエラー発生

“`コンソール
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /Users/motoike/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/mysql2-0.4.10/ext/mysql2
/Users/motoike/.rbenv/versions/2.5.1/bin/ruby -r ./siteconf20200126-32549-89onao.rb extconf.rb
checking for rb_absint_size()… yes
checking for rb_absin

元記事を表示

gem install ovirt-engine-sdk -v ‘4.2.4’がインストールできない

gem install ovirt-engine-sdk -v ‘4.2.4’をbundle install しようとするとエラーが発生する。

エラー内容

Building native extensions. This could take a while…
ERROR: Error installing ovirt-engine-sdk:
ERROR: Failed to build gem native extension.

currentdirectory:
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/ovirt-engine-sdk-4.2.4/ext/ovirtsdk4c
/home/vagrant/.rbenv/versions/2.4.0/bin/ruby -r ./siteconf20180522-11143-c35v2a.rb extconf.rb
checking for xml2-config… no
*** extconf.rb

元記事を表示

[strong parameters][form_with]投稿にユーザー情報を表示する

#概要
###目的
プロゲート以外の方法(strong parameters)で投稿詳細に投稿主(ユーザー)情報を記載すること。
(ちなみにプロゲートは[こんな感じ](https://qiita.com/akr03xxx/items/6a3f23a53dd887ab26f7))
###実現したいこと
| 各action | すること(ポイント) |
|:—————–|——————:|
| new | from_withを使って、投稿。 |
| create | strong parametersを使用して処理。 |
| show | 投稿にユーザー情報を引っ張ってくる。 |

このような流れで進めていきます。

###完成イメージ
スクリーンショット 2020-01-25 15.47.36.png[Rails]多対多のモデルの実装、コントローラー、ビューの書き方

# はじめに
Railsで多対多のモデルを作り、コントローラー・ビューを実装しました。過去にもやったことがあったので、できるかなーと思ったら、かなり迷ってしまったので、手順をメモしておきます。

## データベース設計

今回のテーブルはこんな感じ。作品(works)は複数のカテゴリー(categories)をもち、それぞれのカテゴリーにも複数の作品が属しています。

### worksテーブル
|column|type|
|—-|—-|
|id|integer|
|name|string|
|description|string|
|…|…|

### categoriesテーブル
|column|type|
|—-|—-|
|id|integer|
|name|string|

### work_categoriesテーブル(中間テーブル)
|column|type|
|—-|—-|
|id|integer|
|category_id|integer|
|work_id|integer|

ところで、現在、特に中間テーブルに命名規則はないようなのです

元記事を表示

【Rails】 5分でFullCalendar実装する方法

# はじめに
Railsアプリケーションは爆速で開発できるところがメリットですので、開発スピードに着目して記事を書きました。
5分でFullCalendarを実装するために、vim だけでも書けるようにファイルパスを全てしましたので、
vimを使ってパスをコピー&ペーストして、ファイル内のコードを変更することができます。

プロトタイプを作る時などにスピード重視で作れば一目置かれる存在になれるかもしれませんので、ぜひご活用ください。

# やること
scaffoldで作成したEventモデルにFullCalendarライブラリを適用する。
イメージは下図のような感じになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308256/c0220679-0e6a-61dc-b717-37e72fe1bb9e.png)

## コマンド
Rails のバージョンは5.2.4を指定しました。
また、scaffold で Eventモデルを作成しています。

“`
// Rails アプ

元記事を表示

AWS+Nginx+Unicornを利用してRailsアプリをデプロイしてみた。〜その1〜

##はじめに
[前回記事](https://qiita.com/President_Taka/items/a55c85996dd6a8a8bb4c)で作成したAWSの環境を利用し、Nginx+Unicornを使用してアプリをデプロイします。
次のアプリがローカル環境と同じように動作するようにデプロイします。

スクリーンショット 2020-01-25 6.40.58.png

##Railsアプリケーションの実行環境
DB: MySQL5.7
言語: ruby 2.6.3
フレームワーク: rails 5.2.4
バージョン管理: git

##EC2接続
EC2を起動し、SSH接続を行います。

“`
$ ssh -i aws-test.pem ec2-user@[パブリックIPアドレス]
The aut

元記事を表示

ES6構文をRailsでプリコンパイル

AWSにRailsアプリをデプロイしようとした時、、、

諸々設定も終盤、EC2へSSHでログインし、Railsアプリをプリコンパイルする

スクリーンショット 2020-01-26 10.46.06.png

はい、怒られました。

原因は

“`
Uglifier::Error: Unexpected token: punc ()). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
“`

この部分に書いてありますね。
google翻訳先生に聞くと、

>「Uglifier :: Error:予期しないトークン:punc())。 ES6構文を使用するには、ハーモニーモードを>Uglifi

元記事を表示

git push heroku masterできない時の対応

# 問題

リポジトリから読み取ることができないと言ってそう。。

“`
$ git push heroku master
fatal: ‘heroku’ does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

“`

# 解決策
リンク先のやり方で解決しました!!
### 参考
[作成したRuby on RailsプロジェクトをHerokuを使ってデプロイしてみる](https://qiita.com/lowg/items/8eac155d65fb7919cada)

元記事を表示

OTHERカテゴリの最新記事