- 1. has_secure_passwordについて
- 2. dockerでカラムの変更ができないエラー
- 3. shoulda-matchersが便利すぎる
- 4. USERにいろいろと機能をつけてく。〜Railsチュートリアル7章〜
- 5. 【MySQL版】プログラミング初心者と行うrails環境構築講座【Win版】
- 6. Ruby on Railsインストール(Windows10)
- 7. nokogiri関連でエラーが出ちゃった人は、、、
- 8. Railsのバージョンを確認したい
- 9. Rails をアンインストールする時にエラーが出た場合の対処方法
- 10. [Rails]DM機能に送信日時を日本時間で表示させる
- 11. 【Ruby】社内報を作成してくれるクラスを作成してみた。
- 12. Rails 自作アプリへの道 Part1
- 13. Catalinaのバージョンアップしたらrails sできなくなったけど、Node.jsのインストールで解決!
- 14. 活動記録(2020.3.29)
- 15. プログラミング初心者がgitでつまずいた。英語の意味を調べて、専門用語を深く理解しました。
- 16. の実装
- 17. Rails探検録 Tips: private メソッドになぜ underscore が付くのか
- 18. redirect_toとrender, flashとflash.nowの違い
- 19. Ruby ◯◯進数の扱いについて
- 20. 【Ruby】外部ファイル読み込み require・require_relative・load・autoloadの違い
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成功しました!#今週やったこと
・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%8Bhttps://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回のみ読み込み)
クラス・モジュールの遅延ロードを実現## まとめ
| モジュール関数 |パスの仕方 |読み込み回数 |遅延ロード |
|:—————-