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

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

【Rails】i18nを使って日本語対応する(追加したカラム名も変更したい)

Railsでアプリケーションを作成していて、i18nを使った日本語化のメモです。

バリデーション設定した時のエラーメッセージ表示で追加したカラム名の日本語化がなかなかうまくいかず。
あれこれ試して解消したので参考になればと思います。

### 状況
——————————————-
deviseを用いてユーザー登録機能を実装する際に、表現を日本語対応に変更する。
gemインストールもしたのに、ja.ymlも記載したし、configも書き換えたのに、一部の文言が日本語にならない。

インストールしたgemはこの2つ。

“`
gem ‘devise-i18n’
gem ‘devise-i18n-views’
“`
bundle install 忘れずに。

### 実施したこと
——————————————-
基本的には公式に沿ってQiitaなど参考にしながら記入やgenerationを実施しました。

読み込むための日本語yamlファイルdevise.yaml.jaを

元記事を表示

has_secure_passwordについて

#はじめに
パスワードを実装してみたのでメモ
userモデルにパスワードを実装していきます
##1.has_secure_password
userモデルに

“`ruby:user.rb
class User < ApplicationRecord has_secure_password end ``` と追加することで (1).セキュアにハッシュ化したパスワードを、データベース内の`password_digest`という属性に保存できるようになる。(**条件あり**) (2).2つのペアの仮想的な属性 (`password`と`password_confirmation`) が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。 (3).`authenticate`メソッドが使えるようになる (引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalseを返すメソッド) 。 この3つの機能が使えるようになります。順番に解説していきます。 ###(1) ここでいうセキュアとは安全という意味です。設定したパスワードを暗号化(ハッシ

元記事を表示

#Rails + ActiveModelSerializers で API の JSON を自由に組み立てたいけど Controller の render で扱いづらいので、直接 each serializer で組み立てる例

# やりたいこと

たとえばこんなふうに

– JSON 全体はオブジェクト
– オブジェクトの特定のキーが配列を持つ
– キーの名前は任意につけたい

というような場合があるのだけど

“`rb
{
“all_users” : [
{
“id”: 1,
“name”: “Alice”
},
{
“id”: 2,
“name”: “Bob”
}
]
}
“`

# やってみた

– 良いやり方はどうかは分からない
– ActiveModelSerializers + Rails Controller の組み合わせは、自由なJSONを組み立てるのには、それほど向いていないような気もしている
– render メソッドで勝手に model インスタンスを Serialize してくれる挙動は捨てて、ある程度、自分の実装で Serialize していく必要があるのかもしれない。

“`rb
class UserController < ApplicationController def in

元記事を表示

dockerでカラムの変更ができないエラー

docker-composeで自作アプリのテーブルをいじっていたらこんなエラーに遭遇しました。

“`
$ docker-compose run –rm app rails g migration rename_star_column_to_topics
Starting sakelog_db_1 … done
Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused “exec: \”rails\”: executable file not found in $PATH”: unknown
“`

再起動してみたり、appをdbに書き換えてみたり、色々試しましたが解決できず。

でも解決法は意外と単純でした。

“`
$ docker-compose run –rm app bundle exec rails g migration rename_star_column_to_topics

元記事を表示

shoulda-matchersが便利すぎる

## はじめに
RSpecを書くときに、`shoulda-matchers`というGemを使うと非常に便利でした。

## shoulda-matchersとは

> Shoulda Matchers provides RSpec- and Minitest-compatible one-liners to test common Rails functionality that, if written by hand, would be much longer, more complex, and error-prone.

`Shoulda Matchers`は、手書きで書くと長くて、複雑で、エラーが起きやすいRailsのテストをワンライナーにします。(意訳)

ワンライナーって1行ってことでいいのでしょうか…

## 使用方法
このような`userモデル`に対し、

“`rb:user.rb
class User < ApplicationRecord validates :name, presence: true has_many :topics end

元記事を表示

USERにいろいろと機能をつけてく。〜Railsチュートリアル7章〜

いよいよ7章目に突入していきます。
大体10日前くらいからRailsチュートリアルはじめてそろそろ折り返し地点になるのかな。勉強時間はだいたいですけど60時間くらい。この調子でがんばりますよー!

さて、今回はユーザーのページ作ったりプロフィール写真載せたりしてきます。

#ユーザーを表示する
初めて動的なページを入れていきます。ビューの中にApplicationのデータベースから情報を取り出して各プロフィールの情報をカスタマイズしていきます。Applicationに動的なページを追加する準備としてデバック情報を追加します。
デバック情報ではコントローラはなにを使っているのか?アクションはなに使ってるのかといった動的ページを動かす際に必要な情報を確認することができます。

デバック情報入れるには

“`
<%= debug(params) if Rails.env.development? %>
“`
これを大元のApplication.htmlのフッターの下辺りに入れる。
Rails.env.developmentとは開発環境のこと。ここだけ表示される用にするよう指定している。

元記事を表示

【MySQL版】プログラミング初心者と行うrails環境構築講座【Win版】

プログラミング初心者向けのRuby on Rails環境構築をまとめた記事です。
なかなか一つにまとまっている記事が見つからず、時間がかかったので忘備録的な意味も込めてここに記したいと思います。

#動作環境
OS:Win10 (64bit)
Ruby2.4.9(x64)
Rails 5.0.7.2
db:MySQL

以上が僕のRailsを動かすにあたる環境です。
まず最初にこれらのものを順にインストールしていきましょう。

#Rubyのインストール
###インストーラのダウンロード
[こちら](https://rubyinstaller.org/downloads/)のDEVKITの欄からRuby+Devkitをダウンロードしてください。
(64bitの方はx64、32bitの方はx86)
※バージョンはなんでも構いませんが、何もわからない!という方は推奨verの2.6.5-1をダウンロードするといいでしょう。
###インストール
インストーラ(~.exe)がダウンロードされたら、実行してインストールを行いましょう。
何もわからない場合はデフォルトのまま進めちゃってokです。
fi

元記事を表示

Docker-compose+Rails

# はじめに
Laravelで環境を構築するときは、Laradockが使えてとても楽だった。だけどrailsになると自分で作成しないといけないので、備忘録として作った。

## 目標
使いたいホストユーザーに合わせてユーザーを作成し、そのユーザーにsudo権限を付与したい。

## 環境構築
それでは環境を構築していく。パートは以下のように分かれる。
1.[下準備](#下準備)
2.[コマンド実行](#コマンド実行)
### 下準備
フォルダとファイルを用意していく。またここで使いたいユーザーを確認しておく。

“`
$ mkdir ディレクトリ名
$ cd ディレクトリ名
$ touch Dockerfile
$ touch Gemfile
$ touch Gemfile.lock
$ touch docker-compose.yml
$ id
uid=xxx(ユーザー名) gid=xxx(グループ名) groups=xxx(グループ名)
“`

次に、`Dockerfile`と`Gemfile`に書き込んでいく。
(vimを使っても良いが今回は省略)

“`:Dockerfi

元記事を表示

Railsを使った新規アプリ立ち上げの流れ

#Railsを使った新規アプリ立ち上げの流れを簡単におさらい

####<作業工程一覧>
・rails new
・bundle install
・rails db:create
・rails s

##作業1 新規アプリの立ち上げ
“`:ターミナル

$ rails _5.2.3_ new test_app -d mysql
① ②    ③
①railsのバージョン(5.2.3) ②アプリ名(test_app) ③オプション(データベースとしてmysqlを指定)
“`

ディレクトリの移動
`currentディレクトリ` => `新規アプリ(test_app)ディレクトリ`

“`:ターミナル
$ cd test_app
“`

##作業2 gemのインストール

“`:ターミナル
test_app $ bundle install
“`

##作業3 データベースの作成

“`:ターミナル
test_app $ rails db:create
“`

##作業4 ローカルサーバの起動

“`:ターミナル
test_app

元記事を表示

Ruby on Railsインストール(Windows10)

# はじめに
Ruby on Railsの環境を自前のPCに作りたかったのですが、ネットで検索して出てくるインストール手順「Ruby+Rails+SQLite3」のみだと正常にRailsサーバが立てられませんでした。
事前にNode.js、yarnのインストールをしておく必要がありました。
環境構築はそう何度も行うことはないので、備忘録として手順を残しておきます。

## 環境
Windows 10 Home 64ビット

# Rubyインストール
## 1.Rubyのダウンロード
https://rubyinstaller.org/downloads/
このリンクからインストーラダウンロードページに行き、WITH DEVKITの中で推奨されている最新版をダウンロードします。
記事を書いている2020年3月時点では「Ruby+Devkit 2.6.5-1」が推奨されている最新版のようです。
nokogiri関連でエラーが出ちゃった人は、、、

#エラー


An error occurred while installing nokogiri (1.6.7.rc4), and Bundler cannot continue.
Make sure that `gem install nokogiri -v ‘1.6.7.rc4’` succeeds before bundling.


Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)

#対処法

色々やったけど無理でした。

最終的にrubyをインストールしなおしました

元記事を表示

Railsのバージョンを確認したい

$ gem info -e rails

元記事を表示

Rails をアンインストールする時にエラーが出た場合の対処方法

# エラー発生

$ gem uninstall railties -v ‘6.0.2.2’

を実行するとこんなエラーが

ERROR: While executing gem … (Errno::ENOTEMPTY)
Directory not empty @ dir_s_rmdir – /Users/ユーザ名/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rails-6.0.2.2

原因はインストールの際に管理者権限で作成していたから

# 解決方法

$ sudo gem uninstall railties -v ‘6.0.2.2’

これだけでした。

元記事を表示

[Rails]DM機能に送信日時を日本時間で表示させる

#本記事投稿のいきさつ
現在作成中のアプリでメッセージ機能を作成しました。
その中で日本時間で送信日時を表示させる際に、初めて知った内容があったため備忘録として書きたいと思います。
内容自体はとても簡単なものとなっています。
今回は以下のアプリで実装していきます。
![スクリーンショット 2020-03-29 21.43.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562008/9c0ea834-5735-a484-392c-a4c10775e8d2.png)

##ビューに追記
メッセージを表示させるビューに以下を追記

““message.html.haml
= message.created_at
““

しかし、これだけでは以下の表示となってしまいます。
![スクリーンショット 2020-03-29 21.49.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562008/c0c03fd6-6

元記事を表示

【Ruby on Rails】ストロングパラメータについてbinding.pryで理解を深める 

##この記事の目的
先日tech::campとういうプログラミングスクールを卒業しました
この学習を無駄にしないように理解が浅いところを復習する為に書きます
createアクションにストロングパラメータを設定せず、Post.create(params)とだけ書いて値の保存を試みたら、エラーが出たことがこの記事を書くきっかけです。

##1.ストロングパラメータについて
「Web上から入力されてきた値を制限することで、不正なパラメータを防ぐ仕組み」です。セキュリティ上の問題に対処するための仕組みとしてRails4系から導入されました。
参考 https://kirohi.com/strong_parameters_rails

##2.ストロングパラメータを設定する理由
簡潔にいうと管理者情報を乗っ取られないようにする為です。
本来ユーザーから送られてくることのないパラメータが存在していたとしても、それを取り除いて安全にDBの更新を行うことができます。
悪意のあるユーザーが管理者権限付きのユーザーを取得する為にパラメータを改竄しても、許可されたパラメーターだけに絞り込むことができま

元記事を表示

【Ruby】社内報を作成してくれるクラスを作成してみた。

## はじめに

毎月先輩から出していただいた課題に取り組んでいます、 mi0です。
2月は社内報を作成するクラスの実装を行いました。
この記事は要件定義〜レビューをいただくまでの過程を纏めた備忘録です。
こうやったらもっとよくなる、などのご指摘があればコメント頂けると嬉しいです!

過去の記事はこちら!↓

– [「Ruby初心者向けのプログラミング問題を集めてみた」の電話帳問題解いてみた。](https://qiita.com/mi0/items/738b78fe5e7d10df34ae)
– [Ruby ボウリング問題解いてみた。](https://qiita.com/mi0/items/a8d4b90696ae4404e742)
– [Ruby 価値が大きくなる組み合わせ問題 解いてみた](https://qiita.com/mi0/items/194f3dcb2411b4978fec)
– [Ruby初心者向けのプログラミング問題のカラオケマシン問題にハモリ機能を追加してみた](https://qiita.com/mi0/items/ffffeca9ed5333bf984b

元記事を表示

Rails 自作アプリへの道 Part1

Rails 自作アプリを作った時の経過をまとめていきます。

参考:https://kitsune.blog/rails-install

環境
| 1 | 2 |
|:-:|:-:|
| | |
| | |
| | |
| OS | Mac Mojave 10.14.16 |
| Ruby | 2.6.3p62 |
| Rails | 6.0.2.2 |

元記事を表示

Catalinaのバージョンアップしたらrails sできなくなったけど、Node.jsのインストールで解決!

####筆者の環境
macOS Catalina バージョン 10.15.4
使用言語:Ruby、JavaScript

## エラー内容

不注意により、macOSが**Catalina バージョン10.15.4**に上がってしまった。

それから実装中のアプリでrails sすると、以下のエラーメッセージが表示されサーバーが起動しなくなった。

Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

##これで解決!
[Node.js](https://nodejs.org/en/)をインストール

左側の12.16.1の方はインストールしても開けず、
右側(最新版)をインストールしたらrails s成功しました!

スクリーンショット 2020-03-29 19.12.2</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>JavaScript</div>
<div class='tag-cloud-link'>Rails</div>
<div class='tag-cloud-link'>Node.js</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/mayu_usee/items/869a0b4315390c23b615'>元記事を表示</a></div>
<h3 id=活動記録(2020.3.29)

#今週やったこと
・DBのエラーでつまずき解明と環境変数設定周りで時間を使う羽目に…この辺は別記事にまとめている。
Ruby on Rails 学習メモ.2

・GitHubのこれまでのプルリク等の基本的活用に加えて、issues(とmilestone)でプロジェクトを管理するようにした。
なかなか進まないがこうやってプロジェクトを可視化・効率化させていくのはとても楽しい。

・3月最後の追い込みをしたかったが高熱が出てしまい進捗が芳しくなかった。

#課題・不明点
・テスト環境の理解が浅い。rubocopを導入すれば自動で警告文が出るらしい。RSpec、Jenkinsについても調べておく。
・ルート、ポート、DNS等ネットワーク周りの知識が弱い→基本情報技術者テキスト
・AWSは公式のレクチャーを見るべき。
・デプロイはCircleCIではなくGitHubActionsを採用するのもいいかも。

元記事を表示

distinctメソッドの使い方

## distinctメソッド

distinctメソッドのついて記事が少なかったので、備忘録として残しておきます。
distinctメソッドは**「重複するレコードを1つにまとめる」**構文。

## 使い方

“`
モデル名.(取得データ).distinct
“`

さらに特定のカラムを取得してまとめたい場合は、

“`
モデル名.select(取得データ).distinct
“`
これだけで簡単にまとめることができてとても便利だなと感じました。

元記事を表示

OTHERカテゴリの最新記事