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

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

【第9章】Railsチュートリアル 5.1(第4版) 発展的なログイン機能

#はじめに
筆者は非IT業界から独学でRails学習中で、備忘録目的で執筆しています。
個人的に本章はこれまでの章より難易度が高かったです?(2周目確認・整理が必須と感じました、不足等あれば訂正致しますのでおっしゃっていただければ幸いです)
筆者は[安川さん](https://twitter.com/yasulab)講義の動画版を模写するような形で学んだため、演習でなく全体を流す程度に参考にしてもらえたら嬉しいです。

<参考>
[Ruby on Rails チュートリアル 第9章 永続的セッション(cookies remember me 記憶トークン ハッシュ)を解説](https://qiita.com/bitcoinjpnnet/items/639cbace7cb806379452)
個人的に非常に理解しやすい記事でした。
(Cookieの攻撃手法などは改めて追記したいほどです)

#9.1 Remember me 機能

##Remember me とは
主にアカウント認証に用いられる機能の一つで、ユーザーがログイン時に入力したアカウント情報をサーバ側で持つ(UI視点での)機能

元記事を表示

rspecの始め方

Gemfileに

“`
gem ‘rspec’
group :development, :test do
gem ‘rspec-rails’
end
“`

コマンドラインで

“`
$ bundle install
$ bundle g rspec:install
“`

元記事を表示

webpackerでBootstrapをRailsアプリに反映させたい!

webpackerはwebpackをRailsで使えるように作られたgemパッケージである。
先日、以下の記事に従いwebpackerを使ってBootstrapをRailsのアプリにインストールしたのだが、上手く反映されていない。

[RailsでBootstrapとFont-AwesomeはWebpackerで今時っぽく使おう](https://qiita.com/rhistoba/items/f724dae231d7e28bf477)

この記事ではその原因を明らかにしていくことを目的とする。

## 前提
###僕のスペック
– プログラミング学習を始めて1ヶ月
– HTML/CSS/Javascript/Ruby/Railsをprogateで一応学習済
– Ruby on rails でポートフォリオを作成中

###開発環境
– 端末 : LENOVO ideapad 530S-14ARR
– OS : Windows 10 Home ver.1809
– シェル : PowerShell 5.1.17763.771
– Ruby : 2.6.4
– rails : 5.2

元記事を表示

[Rails]serializeなcolumnのdefault値を空の配列にしたい。

# やりたいこと

“`ruby:migration
class Users < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.integer :id t.string :hoges, null: false, default: [] # これ end end end ``` でもこれじゃ ``` == 20200109052420 Users: migrating ============================ -- create_table(:search_histories) rails aborted! StandardError: An error has occurred, all later migrations canceled: can't quote Array /Users/lyrical_school/project/disappearing_planet/db/migrate/20200109

元記事を表示

[Rails] ActiveAdmin編集フォームをカスタマイズする!

最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#編集できる項目をカスタマイズしたい
ActiveAdminで作成した管理画面で編集できる項目を指定して表示するのが今回の目的です!

[公式ドキュメントによると](https://activeadmin.info/5-forms.html/)
formの出力を調整するやり方が書いてありました。

“`app/admin/users.rb
ActiveAdmin.register User do
省略〜
PERMIT_PARAMS = [:name, :email, :gender, :age] # 編集を許可するフィールドを定義
permit_params PERMIT_PARAMS

form do |f|
f.semantic_errors # エラーメッセージ表示
f.inputs do
PERMIT_PARAMS.each {|attr

元記事を表示

【Rails】簡単にDatetimepickerを使う方法

# はじめに
個人的にオススメなDatetimepickerについて、紹介しようと思います。
導入がめちゃくちゃ簡単です。

# できあがり例
こんな感じで、日付と時間を選ぶと実装することができます。

image.png

個人的にこのdatetimepickerが優れていると感じる点は以下です。

* __はじめからカレンダーと時間が表示されていること__
* __ボタンをクリックする回数が2回で入力ができること__

他のdatetimepickerだと、日付をクリックしないと時間の欄が表示されないため作業量を一瞬で把握できません。
微妙な差ではありますが、ユーザーが少しでも楽な方を考えました。

# 使い方
まず、“`GemFile“`に以下の“`gem“`を記載して、“`bundle inst

元記事を表示

【YAML】Railsのdatabase.ymlについてなんとなく分かった気になっていた記法・意味まとめ

## はじめに
「そういえば、**yaml**って良く使うくせにちゃんと調べたことがないな」
と思い、特徴的な書き方をする機能3つに絞ってまとめました。

[YAMLの公式はこちら](https://yaml.org/)

**Ruby on Rails**で良く使う、`database.yaml`を例に説明します。

## 環境
“`yaml
OS: macOS Catalina 10.15.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`

## そもそも`yaml`って何?
> YAML is a human friendly data serialization
standard for all programming languages.

公式より抜粋しました。

「YAMLは全てのプログラミング言語で使える、人間に優しいデータの書き方だよ!」ということですね。

要するに、**複雑なデータ構造をシンプルに表現するファイル形式**です。

ここから**Ruby on Rails**の`app/config/database.yml`を例に、**他ではあ

元記事を表示

rails server 起動しない。 undefined local variable or method `index’ for #

忘備録用

“`
undefined local variable or method `index’ for #

元記事を表示

ログイン機能の実装(ウィザード形式にするために)

#1.deviseの導入及びユーザーのデフォルトでのログインが可能になるまで
以下の手順で導入

“`GEMFILE.
gem ‘devise’
“`

“`ターミナル.
rails g devise:install
“`
任意のコントローラー(***)を用意して、ルーティングの設定をします。
この場合は、トップページに当たる部分のルーティングの設定をしています。

“`config/routes.rb
Rails.application.routes.draw do
root to: “***#index”
end
“`
“`ターミナル.
rails g controller ***
“`
今回はindexアクションにおいて、特にモデルとのやり取りなどは行わないので、コントローラ内の記述はしません。(任意でトップページのビューは作成したものを使用)

次いでdeviseにおけるデフォルトのログイン機能を実装します。

“`ターミナル.
rails g devise user
“`

今回は、deviseのデフォルトで用意されているemailとpasswordを

元記事を表示

【RSpec】同じパターンのテストシナリオをJSONで定義して外出しする

# 解決できるケース

以下のようなケースに適用できると思います。
あくまで飛び道具的な手法なので、常用は良いと思いません。

* 同じ機能を複数のパラメータパターンで実行して結果を評価する場合、実装を軽量化できる。
* JSONファイルにパラメータ部分のみを外出しするため、RSpecを書けない人でもテストケースのメンテナンスが可能

# 経緯

ある案件で給与計算モジュールを実装した際に、深夜・残業・休日の手当や、勤務時間に関するモジュールなどを実装し、それぞれテストケースを作りました。
ただ、それだと心もとないため、給与計算モジュール群の統合テストケースを実装することとなりました。

例えば、
「時給¥1000で10:00~15:00勤務」「時給¥1001円で18:00~24:00勤務」・・・など
一定のパラメータに複数パターンを入力して結果を評価するテストケースが必要になりました。
そこで、ケースはJSONファイルに書き出しておき、テストの実装はループでやってみようということで、以下のようなRSpecを作成しました。

# 実装

contextをtest_caseの数分ループす

元記事を表示

[Rails]使用中のlocalhost3000のプロセスを切る

最近の勉強で学んだ事を、ノート代わりにまとめていきます。
主に自分の学習の流れを振り返りで残す形なので色々、省いてます。
Webエンジニアの諸先輩方からアドバイスやご指摘を頂けたらありがたいです!

#localhost:3000で別のサーバーを起動したい
localhost:3000でサーバーを起動しようとしたら別のRailsのプロジェクトで使用していたのを忘れていました。

“`ruby
$ rails s
/Users/.rbenv/versions/2.6.4/lib/ruby/gems/2.6.0/gems/railties-6.0.2.1/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /Users in PATH, mode 040777
=> Booting Puma
=> Rails 5.2.3 application starting in development
=> Run `rails server -h` for more startup options
A server

元記事を表示

初心者 アプリ開発

初めましてプログラミング初心者です
お店の空席確認ができるアプリを作成しています
ログインして席の番号をクリック
jsで席の番号の色が変わるように実装しました

ログアウトの機能も実装してあるのですが

リロードした時に番号の色が変わらずログアウトした時のみ色が変わるような実装がしたいです

セッションを使えば実装できるのでしょうか

元記事を表示

macOSをCatalinaにしたらRubyとRailsが消えた時【zsh: /usr/local/bin/rails: bad interpreter: System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: no such file or directory】の対処

##Catalinaにした後Rubymineのプラグインを挿入後の再起動でRailsが消えた
エディターでRubymineを使用しているのですが、プラグインを挿入し再起動、%rails sなどのコマンドをしても、『Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails』とエラーが発生。

###rbenvのパスの設定が変わったと想定
ここら辺の環境設定ではプログラミング初心者はとても頭を悩ます分野。
プログラミングスクールのDive Into Codeに通っていた頃、メンターの皆様によく教わりました。
「bash~が〜」とか「システムでのRubyとローカルは違う〜」「rbenvのpathは〜」
色々教わりましたが、Rubyの構文やRailsの仕組み、そもそもブラウザの仕組みやHTMLやCSSを働きながら多方面の分野を勉強する為、環境構築はとても苦手でした。

###極論:教授して頂いたコードをコピペ
ここでは一応腹落

元記事を表示

Homebrew + rbenv + Bundler + dockerで開発環境をマネージドに構築する(番外編-Ruby on Railsアプリ)

#### 〜[後編](f3bc148e59fbad21eab9)〜からの続き

## 前提

– 便宜上、既存のワーキングコピーがあります
– ただし、 `Dockerfile` や `docker-compose.yml` は後編からガラッと変わります

## Docker手順

### Dockerfileのコマンド

| コマンド | 説明 |
|:——–|:—-|
| FROM | 使用するイメージとバージョン |
| RUN | コマンドの実行。railsに必要な必要なnodejsとpostgeqsqlをインストールしている |
| WORKDIR | そのままの意味。作業ディレクトリを設定します。 |
| ADD | ローカルのファイルをコンテナへコピーする(昔のCOPYコマンドになります) |
| ENTRYPOINT | 一番最初に実行するコマンド(ここではentrypoint.shを参照) |
| EXPOSE | コンテナがリッスンするport番号 |
| CMD | イメージ内部のソフトウェア実行(つまりRailsのことですね) |

##### 1

元記事を表示

【Rails】特定の文字列をリンクにする

運営しているサイトの掲示板において、返信時、冒頭に`>>123`のような記述が入るようにしているのですが、この部分をその番号のコメントへのリンクにすることができたので、やり方を書き残しておきます。

##controller
“`app/controllers/comments_controller.rb
def index
@comments = Comment.all
end
“`

##hepler
“`app/helpers/comments_helper.rb
module CommentsHelper
def generate_link(txt)
reply_txt = txt.slice(/>>[0-9]+/)
id = reply_txt.slice(/[0-9]+/)
link = ”
link << "#{reply_txt}
content = txt.sub!(/>>[0-9]+/, ”)
[link: link, content: cont

元記事を表示

【Rails】turbolinksを無効化する

Chart.jsでグラフの描画に失敗することが多々あり、色々調べたところturbolinksが原因でした。
無効化したので、その方法をまとめます。

###Gemを削除
“`rb:Gemfile
#gem ‘turbolinks’, ‘~> 5′
“`
“`terminal
$ bundle update
“`

###application.jsを編集
以下のコメントアウトされている記述を削除します。機能に影響する系のコメントです。

“`app/assets/javascripts/application.js
//= require turbolinks #この行を削除
“`

###application.html.erbを編集
以下の2行の`’data-turbolinks-track’: ‘reload’`部分を削除します。

“`erb:app/views/layouts/application.html.erb
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-tra

元記事を表示

よく使う、好きなGem

好きなGemをまとめます。

##better-errors、binding_of_caller
エラー画面がわかりやすくなって、デバッグが捗ります。

##annotate
スキーマ情報を、model内にコメントとして書き出してくれます

##letter_opener_web
ローカル環境で送信したメールをブラウザ上で確認できるようになります。

##dotenv-rails
環境変数を楽に扱えるようになります

##paranoia
論理削除の実装が楽になるgemです

##gon
Rubyの変数、配列、ハッシュなどをJavaScriptに簡単に引き渡すことができるようになります。

##rails-i18n
エラーメッセージ等を日本語化するために使います

##kaminari
ページネーションを楽に実装することができます

##carrierwave、mini_magick
画像をリサイズしてアップロードし、DBと紐付けて管理することができるようになります

##好きになれなかったGem達
###devise
一番有名な認証用Gemです。
カスタマイズがしづらくて、結局あとあ

元記事を表示

[解決済] Rails on Docker を Heroku へデプロイ時, db:create が通らない.

現在docker-composeを用いてRailsアプリケーションを開発しており,
本番環境へのリリースとしてHerokuへのデプロイを行っている途中でエラーが発生している状態です.

## やったこと
[こちらのQiita記事](https://qiita.com/take18k_tech/items/25a1147c481a37b423fc)や[herokuのdocs](https://devcenter.heroku.com/articles/cleardb#configuring-your-ruby-application-to-use-cleardb)を参照しながら以下のコマンドを実行していきました.
ここまでは何のエラーもなく通っています.
(herokuへログイン済み)

“`bash

$ heroku container:push web

$ heroku container:release web

$ heroku addons:create cleardb:ignite

$ heroku config
=== myapp Config Vars
CLEAR

元記事を表示

RailsでUTF-16のファイルを作成する

####経緯
Ruby on RailsでUTF-16のファイルを作成する必要があったので、
その時の処理を備忘録として書き留めて置きたいと思います。

####ソース
“`ruby:create_file.rb
/**
* ファイル作成(ローカルにファイルを作成する)
* @param xml バイナリデータ
* @param file_name ファイル名
* @param upload_time 作成日時
*/
def put_string_file(xml, file_name, upload_time)
# ディレクトリとファイルの定義
dir = “#{Rails.root}/storage/#{upload_time}/”
file = “#{dir}#{file_name}”
# フォルダがなければ作成
FileUtils.mkdir_p(dir) unless File.directory?(dir)

# バイナリデータをファイルに出力
File.binwrite(file, StringI

元記事を表示

サーバーが起動しない時の対処法

A server is already running.が出てrails s が起動しない時

“`terminal
#lsof -i

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby2.5 2722 vagrant 15u IPv4 23988 0t0 TCP ubuntu-bionic:3000->_gateway:52166 (CLOSE_WAIT)
ruby2.5 2722 vagrant 16u IPv4 23985 0t0 TCP *:3000 (LISTEN)

“`
この2722が邪魔。なので

“`terminal
#kill -9 2722

killed
“`

これで動かせる。
アプリ/tmp/pids/server.pidのファイルを削除してもいけるらしい。

元記事を表示

OTHERカテゴリの最新記事