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

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

【Rails】partialでeachしたいな

## 初めてのQiita投稿
です。
プログラミング言語はもとより、日本語すら怪しい。
(にほんうまれ、にほんそだち)

だから、なるべく簡単にかいてみるよ。
難しいことはわからないよ。

誠に遺憾なレベルのひとだから、ご指摘など大変喜ぶよ。

## やりたいな
eachで回すのをベタ書きするとすごいごちゃっとするな。
partialで切り取ってスッキリさせたいな。

## どう書くのかな

### partialでスッキリさせたい方はこう!

“`erb:Tops/index.html.erb
<%= render partial: "blog_card", collection: @blogs %>
“`

#### `partial: “blog_card”`ってなに?

– 雑に翻訳するとこういうことみたいだよ

“`
partialだよ:同じディレクトリにある_blog_card.html.erbが対象のpartialだよ
“`

– 同じディレクトリじゃなくて別のディレクトリ…例えば`app/views/layouts`に`_blog_c

元記事を表示

rack-attackで特定のURLにIPアドレス認証をするには

####はじめに
今回はrack-attackというgemを使って特定のURLをにIPアドレス認証をかけます。IPアドレス認証をするだけだったらいろいろな記事がありましたがなぜか特定のURLにだけかけたいという記事があまりなかったので忘れないよう記事にします。

##rack-attackをインストール
“`ruby:gemfile
gem ‘rack-attack’
“`
次にbundleコマンドを実行します。

“`ruby:
$ bundle install
もしくは
$ bundle install –path=vendor/bundle
“`

###準備
config/application.rbに以下の一文を追加してください。

“`ruby:config/application.rb
config.middleware.use Rack::Attack
“`

次にconfig/initializersの中にrack_attack.rbという名前でファイルを制作してください。

“`ruby:config/initializers/rack_attack

元記事を表示

[WIP]modelのRspecテストの書き方

#概要
私のmodelスペックの運用方針を掲載します。

サンプルコード内で<単語> で表記されている部分は
<>を抜き、単語 で指定されている内容に置き換えます。

#modelで何をテストするか?
01_バリデーション
02_クラスメソッド
03_インスタンスメソッド

# サンプルコード(テンプレート)
“`ruby:app/spec/models/xxxx_spec.rb
require ‘rails_helper’

RSpec.describe <モデル名>, type: :model do
before do
<インスタンス変数の準備>
end

# <バリデーションのテスト>
describe “<カラムの名前が>” do
before do
<インスタンス変数の準備>
end
context “<有効な条件ならば>” do
it “<有効な状態である>” do
expect<>
end
end
context “<無効な条件ならば>” do

元記事を表示

Rspecの書き方

Railsを学習していく中でRspecでのテストも書けるようになりたかったのでまとめてみます。

##1 Rsepcの構造
四則演算のテストをもとに考え、Rspecの中で使用されているコードを確認します。

##2 describe
describeはテストの大きな括りを表します。
なので基本的にはこのdescribeの中にテストの内容を細かく書いていきます。

“`ruby
describe ‘四則演算’ do
end
“`

##3 context
contextはdescribeの中を分けたい時に使用します。
例えば四則演算でいうところの’足し算’、’引き算’、’割り算’、’掛け算’のようにdescribeの中に様々な種類があるときなどはこのcontextを使用します。

“`ruby
describe ‘四則演算’ do

context ‘足し算’ do
end
context ‘引き算’ do
end
context ‘割り算’ do
end
context ‘掛け算’ do
end

end
“`

逆に言うとdescribeの中を

元記事を表示

rails 開発日記2 ユーザー登録(devise)・deviseでのフラッシュメッセージ

# ユーザー登録機能の実装

*この記事は技術や知識の共有目的ではなく、完全に自己満足のアウトプット用です。

<開発環境>
1. ruby 2.6.3
2. Rails 5.1.6
3. AWS Cloud9
4. GitHub
5. Heroku(予定)

今回はユーザー登録機能を実装するにあたり、deviseを使用してみました。

### デバイスの実装

参考にしたページはこちらです。

Railsにdeviseをサクッと導入!認証機能の使い方も解説【日本語化】

基本的にはこちらのホームページ通りに進めましたが、フラッシュメッセージの実装に少し戸惑ったので詳しく記載していきます。

application.html.erb

“`

<%= render 'layouts/header' %>
<% flash.each do |key, value| %>
<%= content_tag(:div, value, class: "#{key}") %>
<% end %>

[Rails]コマンドで作る★3分BBS

Railsの復習がてらBBS作成の備忘録です。
今回初めてmysqlではなくscaffoldを使用するので
機能拡充しましたら随時更新予定です。

## 作成

“`ruby:ターミナル
$ rails new bbs
$ cd bbs
“`
## BBS作成

“`ruby:ターミナル
$ rails g scaffold テーブル名(例:articles) カラム名(例:content):string #カラムの型(今回はtext入れるのでstring)
$ rails db migrate
“`
## index作成と表示〜BBSのlinkを貼るところまで

“`ruby:ターミナル
#コントローラーを作成
$ rails g controller ディレクトリ名(例:home) index
“`

“`ruby:config/routes
Rails.application.routes.draw do
get ‘home/index’
resources :articles
root “home#index” #追記した箇所
# For deta

元記事を表示

RailsTutorial 7章 備忘録

#はじめに
Railsチュートリアルのアウトプットも兼ねた備忘録です。チュートリアルで簡単なアプリを作った後、チュートリアル で作成した物にプラスで機能をつけたり、または0からWEBサービスを作成したりする予定です。
所詮、初心者の備忘録なので理解が間違っているところもあると思いますがよろしくお願いします。
#ユーザー登録機能
ユーザー登録機能は以下の順で行なっていく

1. HTMLフォームを使用して登録情報を送信
2. ユーザーを新規作成してDBにデータを保存
3. 保存したデータをユーザープロフィールとして表示
4. それに伴うテストも追加

#デバック
ここからはDBから取り出した情報をもとに表示する内容を変えるいわゆる「動的なページ」を作成していきます。そのため今どこのなんの情報が取り出されているのかという事がわかった方が開発の効率が上がります。その為、デバック情報を表示できるようにしておきましょう。

“`html:applocation.html.erb


.
.
.

<%= render

元記事を表示

【Rails Tutorial11章】アカウント有効化機能の実装手順を整理してみました【中編】

##はじめに
Railsチュートリアル11章の内容を、少しでも理解の助けとなればと思い、割としっかり目に整理しました!
__備忘録です。__

##前提
Railsチュートリアル1〜10章までの内容が完了していること。

##内容
Railsチュートリアル11章の__アカウント有効化機能の実装手順__を、前中後半の3回に分けて整理おります。
中編である今回は、__アカウント有効化メール送信機能の実装__をしていきます!

前編→[__AccountActivationsリソースの作成__](https://qiita.com/kurawo___D/items/233ed8b4f8749c95df9e)
後編→__アカウント有効化機能の実装__

##1.アカウント有効化用のメールを送信する機能の実装
  ●__データのモデル化が完了したので、次はアカウント有効化メールの送信に必要な機能を記述していく__。

  ●__メールを送信する機能を実装するには、Action Mailerライブラリを使って、Userのメイラーを作成する必要がある__。
    ➡︎メイ

元記事を表示

【Rails】【エラー】undefined method `to_key’ for ×××

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/c133b2a8-1d0e-5bc5-173b-8f26fc3d3c94.png)
railsにて上記エラーが発生しました。

#解決法

“`posts_controller.rb
def index
@posts = Post.all
end
“`

“`erb:index.html.erb
<%= form_for @posts ,html: { class: "form-group" } do |form| %>
“`
`@posts = Post.all`で定義しているインスタンス変数に対して`form_for`を使っていたため、`form_for`を使用しない構成にしました。

#原因

“`
■ ActiveRecord::Relationを返すメソッド
all
scope (実装でnilを返すとallと同様になる)
select (使い方次第)
group
order
reorde

元記事を表示

railsチュートリアル 6章 初心者が意識すべき事

#初心者がrailsチュートリアル6章で学ぶべき事
1.DB Browser for SQLiteをダウンロード+基本的な使い方を理解する
2.正規表現について
3.6−3全て
##Browser for SQLiteのダウンロード+基本的な使い方の理解
ここは、僕自身かなり苦労しました笑
というのも、そもそもパソコンを使う事が苦手だったからです。
飛ばすこともできるのですが、Progateからrailsチュートリアルにきた人にとってはかなり良いツールだと思います!
エンジニアとして仕事をするということはコードを打つだけではなく、当たり前に様々なソフトウェアを使いこなす必要があります。(railsチュートリアルだけでも、**heroku**や**AWSのS3**など自分は結構苦労しました笑)
つまり、ソフトをダウンロード して使いこなすという意味でこれは大事です。
なので、ここではあえてどうすれば良いかは書きません(書かんのかーい)
正直、そこまで難しくない事を考えると、これができない方はパソコンを使う仕事に向いていないかもしれません。
なので、試行錯誤しながら頑張って見ましょう!!

元記事を表示

ハンバーガーメニューとイケてるボタンを両立させる方法

# 目標
以下のような仕様のヘッダーを作成する

“`:仕様
1. ビューポートサイズが中以下の時、ハンバーガーメニューを表示する。
2. ビューポートサイズが大以上の時、ハンバーガーメニューを削除し、リンクボタンを表示する。
“`
> ビューポートサイズの定義については、Bootstrap4移行ガイドを参考にしています。
>> https://cccabinet.jpn.org/bootstrap4/utilities/display

# 完成イメージ

>![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547164/11121d66-f13a-a720-9cb4-de471ff54524.png)
>>図1 ビューポートサイズが中以下の時の画面

>![スクリーンショット (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547164/a1e87f4c-cf2a-ceb4-

元記事を表示

【Rails tutorial・11章】アカウント有効化機能の実装手順を整理してみました【前編・AccountActivationsリソースの作成】

##はじめに
Railsチュートリアル11章の内容を、少しでも理解の助けとなればと思い、割としっかり目に整理しました!
__備忘録です。__

##前提
Railsチュートリアル1〜10章までの内容が完了していること。

##内容
Railsチュートリアル11章の__アカウント有効化機能の実装手順__を前中後半の3回に分けて整理していきます。
前編である今回は、アカウント有効化機能を実装するのに必要となるリソースや、データモデルを作成していきます!

中編→[__アカウント有効化メール送信機能の実装__](https://qiita.com/kurawo___D/items/051ce6f6bb0837e3481a)
後編→__アカウント有効化機能の実装__

##1.AccountACctivationsリソースを作成する
  ●セッション機能を使って、アカウントの有効化リソースを作成していく。
    ➡︎アカウント有効化リソースを作成するにあたり、Userモデルに必要なデータを追加していくことが必要となる。

    ➡︎注意しなければならない点が1つあっ

元記事を表示

ユーザー管理機能の実装(2)

今回も、引き続き**ユーザー管理機能の実装**を行なっていきたいと思います!
1~7の手順で進めていきます
(2)では**3.viewファイルの追加**を行います
*(1)はこちらhttps://qiita.com/yni_se/items/482b992c748e134b3b03

#目次
1. deviseのインストール
2. Userモデルの作成
3. deviseのviewファイルの追加 **←いまココ!**
4. サインアップ機能の追加 **←いまココ!**
5. ユーザー情報編集機能の追加
6. ログアウト機能の追加
7. フラッシュメッセージの表示機能の実装

#3.deviseのviewファイルの追加
まず初めに、deviseのviewファイルを追加するためのディレクトリと作成しましょう!
作成するディレクトリは**2つ**です
・`devise`
・`users`
さらに、`devise`ディレクトリには、以下の**3つ**のディレクトリを作成しましょう!
・`registrations`
・`sessions`
・`shared`
ディレクトリが作成できたら、vie

元記事を表示

カラムの特定の値がいくつあるか(countメソッド)

countメソッドを使ってカラム値の合計を求めるのに苦労したのでメモ
ruby 2.6.3
rails 5.1.6

##特定の文字数や要素をカウントしたい場合
主の場合、Userモデル(親)、Wordモデル(子)という状況でUserモデルのViewでWordモデルのcompleteカラムのtrueという値がいくつあるのかを表示したいか模索していました。
##結論
特定の文字数や要素をカウントしたい場合はcountメソッドを使うとよい。
lengthやsizeといったメソッドもあるが、そちらはまた別の機会に。
##モデルの状況
**User.rb**

| id | name | email |
|:—————–|——————:|:——————:|
| 1 | saber | ~~ |
| 2 | lancer | ~~ |
| 3

元記事を表示

Rails scope とは わかりやすく

## Scopeとは
関連オブジェクトやモデルへのメソッド呼び出してとして参照される、よく使用されるクエリを指定できる。どのスコープメソッドも、ActiveRecord::Relationオブジェクトを返す。このオブジェクトに対して、別のスコープを含む他のメソッドを呼び出しを行うこともできる。

## メリット
スコープを使うことで、繰り返し何度も呼び出すクエリをスコープにまとめることができ、汎用性とコードがすっきりする。

## 基本的な使い方
– 使用したいControllerに対応するModelに記入する
– `scope :シンボル名, -> { クエリを指定 }`(ラムダじゃなくても書けますdo~end)

## 補足
###ActiveRecord::Relationオブジェクトとは
クエリを生成するための条件を持っておいて、必要に応じて適切なSQLクエリを生成・発行してくれる
その結果からオブジェクトを作って返したり、保持してくれている
例:User.all, User.where(name: ‘hoge’) などで帰ってくるものがActiveRecord::Relati

元記事を表示

Devise&omniauth-facebookアカウント認証

## はじめに
食べログのコピーサイトを開発中にSNS認証で結構躓いたので備忘録として書いています。:muscle:
【新規登録】 omniauth-facebookでアカウント情報を取得後、ニックネームを入力して登録
【ログイン】 Facebookボタンを押すだけでログイン
という感じをローカル環境で実装をしていきます :paperclip:
基本はこの[github](https://github.com/simi/omniauth-facebook)を見るのが1番です!

## 動作環境
* Ruby 2.5.7
* Rails 5.2.4.2
* Vagrantによる仮想環境

## ログイン機能
#### deviseをインストール
Gemfileの最後に、以下のように2行を追加して保存します。

“`ruby:Gemfile
gem ‘devise’
“`
追加したdeviseを、アプリケーションに読み込ませます。

“`
$ bundle install
“`
次に、deviseの初期設定を行います。

“`
$ rails g devise:install
`

元記事を表示

#Rails初心者と繋がりたい

#Railsで作られたサイト3つ
最近Ruby on railsを勉強し始めて
「だめだ…わからん。なんでこんなことやってるんだ」
と心が折れかけているあなた!

あなたがきっと使ったことあるあのサービスもRuby on Railsで作られています。

##Cookpad
手料理大好きあなたの味方CookpadはRuby on Railsを使って作られています。![Cookpad.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613190/5d9cfec6-40c4-d9fd-bbc3-359497022f84.jpeg)

##Hulu
最近よく見ますね。
Hulu無料トライアル!
いや、登録しないよ。って思ってたでしょう。
でも、Ruby on Railsで作られてるんだと思うと親しみ湧きますね。
![download-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613190/6dee6ce2-ee33-

元記事を表示

Redmineプラグイン開発環境を作成する

Redmineのプラグインを保守するにあたって、ノートPCへRedmineの環境を作成しました。今までbitnamiのWindows用インストーラーを使って開発環境を作成してきたのですが、正直しんどくなってきました。
何度かLinuxのサーバーをVM上で作成して環境作ってみたものの、失敗に失敗を重ねて挫折したままでしたが、コロナの影響もあり勤務時間が多少短くなったのを機に、開発用環境づくりに再チャレンジしています。

当記事は、その時の手順を記録した、個人的な備忘記事です。今後何度かチャレンジして修正していくつもり。

ちなみに、私はlinuxをほとんど触ったことがない初心者。色々webで調べてもすべてが呪文のように見えてしまうレベルです。

## 今後この記事を修正したい点

* CentOSのインストール方法を詳細化
なんとなく上手くできただけっぽいので手順をちゃんと残しておきたい

* ファイアーウォールの設定とMySQLの設定
bitnamiのVMを使ってredmineをノートPCにインストールした際に、MySQLを外部アクセスできるようにできなかったため要勉強。

* red

元記事を表示

【備忘録】text_field と text_area 違い

###結論

【text_field】 は入力できる内容が1行のみになります。

【text_area】 は複数行の内容でも入力が可能です。

##あとがき

サイト作成の際に、【text_field】のサイズを変更しようとしたのですが
1行しか入力できないことを知らず、必死にcssを当てたりbootstrapのドキュメントを読んだりして、時間を使ってしまいました。
初学者の方の参考になれば幸いです。

元記事を表示

Sidekiq周り

Sidekiqのジョブには以下のステータスがある

– 処理待ち
– 実行中
– リトライ待ち
– 実行予約(その時間まで実行されない)
※一度失敗すると「リトライ待ち」になり、処理待ちには出てこない

「実行中」のジョブは削除できないという縛りあり。

それぞれの数、一覧、削除をするサンプル(rails consoleで実行)

**処理待ち**

やりたいこと|コード
—|—
数表示|Sidekiq::Queue.new.size
一覧表示|Sidekiq::Queue.new.each {|job|puts “#{job.jid} #{job.klass} #{job.args}”}
削除|Sidekiq::Queue.new.clear ※全削除

**実行中**

やりたいこと|コード
—|—
数表示|Sidekiq::Workers.new.size
一覧表示|Sidekiq::Workers.new.each {|process_id, thread_id, job| puts “process_id:#{proc

元記事を表示

OTHERカテゴリの最新記事