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

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

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) ここでいうセキュアとは安全という意味です。設定したパスワードを暗号化(ハッシ

元記事を表示

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

元記事を表示

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】社内報を作成してくれるクラスを作成してみた。

## はじめに

毎月先輩から出していただいた課題に取り組んでいます、 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を採用するのもいいかも。

元記事を表示

プログラミング初心者がgitでつまずいた。英語の意味を調べて、専門用語を深く理解しました。

gitについて1から復習してみました。

# Git

gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。

要は、複数人で開発するときに、誰がどれをいじったのか分からなくてグチャグチャになるのを防止するためのシステムのことなんだなーてことか。よし。

#Github

これはgitを扱うためのツールのことですな。

っと書き始めてたら、最強に分かりやすく説明している記事を見つけてしまいました。

こちらを読めば完璧。

https://qiita.com/nnahito/items/e546b27f73e7be131d4e

でも疑問点が二つ湧いてくる。

##pullとbranchって一緒じゃね?あと、pushとmargeって一緒じゃね?

すごい調べたけど、概念が違うっぽい

branchとmargeは、masterから枝分かれを作ったり、合体したりする行為

pullとpushはそれを包括して取ってきたり送ったりするからconflictが起こりやすい。

元記事を表示

<前のページ  次のページ>の実装

#前後のレコードを取得して、前後ページ移動する
# はじめに
よくブログなどで見る、
<前のページ  次のページ>
でページ遷移をする機能を現在制作中のプロダクトに実装します。
調べた内容を極力シンプルにまとめました。

プロダクトは個人間取引を行うもので、今回実装するものは
商品を見ていくときの利便性を向上させるものです。
今回は出品された商品の詳細を表示するページに前後のリンクを実装します。
特にカラム別に分けることなく、全てのレコードを新着順で並べて前後していきます。
# 狙い

出品された順にページを前後するリンクを実装します。
<前のページ  次のページ>
といった表示で、ページ遷移をします。

# 実装
今回はitems_controllerのshowアクションにて行います。
まず商品の情報を取得します。

“` app/controllers/itmes_controller.rb
def show
@item = Item.find(params[:id])
end
“`

次にitemモデルにて、メソッドを定義します。
where,order,firs

元記事を表示

Rails探検録 Tips: private メソッドになぜ underscore が付くのか

# 【本文】
最近、Rails のソースコードを暇つぶしに読んでいたら、ふと private メソッドの枠組みで underscore の有無があることが気になりました。

参考 URL を読むと、Ruby では private と protected メソッドに使われることが多いそうです。

他のプログラミング言語でも( JavaScript, PHP, Phython etc…)同様のコーディング規約が存在します。これは、boolean を返すメソッドは末尾に`?`を付けたり、破壊的なメソッドは`!`を付けたり、getter メソッドに`=`を付けることと同じ意味ですね。

– 参考URL
– [Ruby \- Rubyの1文字目がアンダーバー\(\_\)のメソッド定義|teratail](https://teratail.com/questions/110830)
– [JavaScript \- \[Javascript\]アンダースコアから始まる変数、関数の意味|teratail](https://teratail.com/questions/18728)

元記事を表示

redirect_toとrender, flashとflash.nowの違い

ポートフォリオ作成中、バリデーションのエラーメッセージが表示できずに苦戦してました
redirect_toとrenderの違いを理解していなかったのが原因です。
redirect_toとrender, ついでにflashとflash.nowの違いについても今更理解したのでまとめます。

## 参考
https://railsguides.jp/layouts_and_rendering.html#redirect-to%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B

https://railsguides.jp/action_controller_overview.html#flash

## renderとredirect_toの違い

– render => ビューを描画するだけで、新たにhttpリクエストを送信するわけではない
– redirect_to => 新たにhttpリクエストを送信して、その結果コントローラからビューが描画される

“`ruby:app/controllers/tweets_controller.rb
cla

元記事を表示

Ruby ◯◯進数の扱いについて

10進数から(n)進数へ変換

“`
10進数.to_s(n)

255.to_s(2) => “11111111”
255.to_s(8) => “377”
255.to_s(16) => “ff”
“`
(n)進数から10進数へ変換

“`
“n進数”.to_i(n)

“11111111”.to_i(2) => 255
“377”.to_i(8) => 255
“ff”.to_i(16) => 255
“`
8進数を10進数に => oct
16進数を10進数に => hex

“`
8進数.oct
16進数.hex

“377”.oct => 255
“ff”.hex => 255
“`
(n)進数の頭に付けて10進数に変換
0b => 2進数
0 => 8進数
0x => 16進数

“`
0b2進数
08進数
0x16進数

0b11111111 => 255
0377 => 255
0xff => 255
“`
計算方法

“`
10進数  2進数
0 0
1 1
2 10
3 11
4

元記事を表示

【Ruby】外部ファイル読み込み require・require_relative・load・autoloadの違い

外部ファイル読み込みの違いを明確にしたかったのでまとめてみました。

## require(“絶対パスまたは相対パス”)
ライブラリや外部ファイルを絶対パス、相対パスで読み込む(1回のみ読み込み)

## require_relative(“絶対パス”)
ライブラリや外部ファイルを絶対パスで読み込む(1回のみ読み込み)
 
## load(“絶対パスまたは相対パス”)
ライブラリや外部ファイルをファイルを絶対パス、相対パスで読み込む(再読み込み、拡張子は省略できない)
loadはrequireやrequire_relativeよりも再読み込みするため遅くなる
 
## autoload(“クラス/モジュールの定数”, “絶対パスまたは相対パス”)
定数を最初に参照した時に第2引数を絶対パス、相対パスで読み込む(1回のみ読み込み)
クラス・モジュールの遅延ロードを実現

## まとめ
| モジュール関数 |パスの仕方 |読み込み回数    |遅延ロード        |
|:—————-

元記事を表示

OTHERカテゴリの最新記事