- 1. 前提
- 2. 開発環境
- 3. 発生したエラー
- 3.0.1. railsチュートリアル第八章 レイアウト変更をテストする
- 3.0.2. railsチュートリアル第八章 レイアウトを変更する
- 3.0.3. cannot load such file — nokogiri/nokogiri (LoadError)奮闘日記
- 3.0.4. Ruby on railsをdockerで環境構築
- 3.0.5. Rspec VCRの使い方(stubされているかどうかの確認、動的なパラメータがある場合のcassetteのマッチング、動的にcassetteの内容を変更する)
- 3.0.6. ターミナル起動時に/Users/ユーザー名/.zshrc:1: command not found: rbenvと表示されるのを消しさる
- 3.0.7. docker composeが起動できなくなった話。
- 3.0.8. rails データの並び替えまとめ
- 3.0.9. railsチュートリアル第八章 現在のユーザー
- 3.0.10. railsチュートリアル第八章 ログイン
- 3.0.11. ターミナルとは何か!
- 3.0.12. has_many関連作成時に使えるようになるメソッド
- 3.0.13. 【RSpec】モックを使用したテスト
- 3.0.14. VsCodeで@も含めて選択できるようにしたい。
- 3.0.15. wheneverにおいてのcron設定
- 3.0.16. Rails5技術者認定ベーシック試験に落ちてきた!
- 3.0.17. RubyもRailsもSQLも知らんC++erですがいきなり戦いを挑んでみた
#2.5 レイアウトの調整
#はじめに
自分の学習復習のために、アプリを一から作成する手順を記事にしてます。
今回は #2.5 のレイアウト調整になります。#目次
1.Bootstrap,font-awesomeの導入
2.各ページのレイアウト調整##1.Bootstrap,font-awesomeの導入
* 1.gemファイルの追加
* 2.application.jsにbootstrap,font-awesomeを呼び出す記述を書く
* 3.Bootstrap,font-awesomeをSCSSに読み込ませる(今回はSCSSを使用)の3つを行い、Bootstrap,font-awesomeの導入をしていく。
###1.gemファイルの追加
“`:gemfile
:
:
#bootstrapを利用できるようにする
gem ‘bootstrap’, ‘~> 4.5’
gem ‘jquery-rails’
#font awesomeも使えるようにする
gem ‘font-awesome-sass’, ‘~> 5.13’
“`###2.application.jsにbootstrap,font-
#2 投稿機能
#はじめに
自分の学習復習のために、アプリを一から作成する手順を記事にしてます。
今回は #2 の投稿機能になります。
ラジオボタンやプルダウン選択のフィールドも使用して作成していきます。#目次
1.Model作成、マイグレーションファイルの編集
2.Controller,routes,viewファイルの作成
3.controllerの中身記述
4.viewファイルの中身記述内容としてはシンプルですが、今回viewファイルの所でプルダウン選択やラジオボタンのフィールドも使用しているので、そちらの内容も理解していきましょう。
##1. Model作成、マイグレーションファイルの編集
“`
rails g model StudentPost
“`
投稿用のStudentPostテーブルを作成します。
rails db:migrateを行えばデータベースに反映されるのですが、その前にマイグレーションファイルを編集していきます。“`Ruby:db/migrate/~~_create_student_posts.rb
create_table :student_posts
Rails統合テストでDRb::DRbRemoteErrorにハマった話
前提
RailsチュートリアルにDockerを使い、学習を進めています。
開発環境
Ruby:3.0.2
rails:6.0.4発生したエラー
5.3.4 リンクのテストでsite_layoutというテストのテンプレートを生成
“`ターミナル.
$ docker-compose exec web bundle exec rails generate integration_test site_layout
invoke test_unit
create test/integration/site_layout_test.rb
“`
5.32 assert_templateメソッドを使って、Homeページが正しいビューを描画しているか確かめる“`test/integration/site_layout_test.rb
require ‘test_helper’class SiteLayoutTest < ActionDispatch::IntegrationTest test
railsチュートリアル第八章 レイアウト変更をテストする
###レイアウト変更をテストする
####fixture向けのdigestメソッドを追加する
app/models/user.rb“`rb
class User < ApplicationRecord before_save { email.downcase! } # データベースに保存する前に処理をする。 # 入力されたメールアドレスを小文字にする。 validates :name, presence: true, length: { maximum: 50 } #属性はname,属性の存在を検証、 最大50字まで VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, #最大255字まで format: { with: VALID_EMAIL_REGEX }, uniqueness: tr
railsチュートリアル第八章 レイアウトを変更する
###レイアウトを変更する
ログイン機能の最初の具体的な応用として、ユーザーがログインしているときとそうでないときでレイアウトを変更してみましょう
ログアウト」リンク、「ユーザー設定」リンク、「ユーザー一覧」リンク、「プロフィール表示」リンクも追加します“`html
<%= link_to "Profile", current_user %>
“`“`html
<%= link_to "Profile", user_path(current_user) %>
“`####logged_in?ヘルパーメソッド
app/helpers/sessions_helper.rb“`rb
module SessionsHelper# 渡されたユーザーでログインする
def log_in(user)
session[:user_id] = user.id
#sessionメソッドで作成した一時cookiesは自動的に暗号化される
# ユーザーのブラウザ内の一時cookiesに暗号化済みのユーザーIDが自動で作成
end
cannot load such file — nokogiri/nokogiri (LoadError)奮闘日記
railsチュートリアルの2周目さあ頑張ろう…!と意気込んでいたのですが、
「ゼロからデプロイまで」で躓きました。#経緯
私はこのエラー、遭遇は2回目です。(1回目は諦めました)
1回目は、railsチュートリアルを進めていく上でcloud9の容量がなくなって、一度git cloneでローカル環境に取り込んだ時です。
rails serverの時にnokogiriエラーが出ました。私の当時の力じゃどう頑張っても解決しそうになかったので、Cloud9の容量を無料最大まで上げた環境を新たに作り、そこにgit cloneをして学習を続けました。
1周では技術が自分のものになった気がしなかったので、2周目はローカル環境で進めてみようと思い再度nokogiriエラーと戦うことになりました。
#nokogiriエラーについて
railsを勉強する上でいろんな方が遭遇しているようです。
私が遭遇したエラーは、追い切れないほどのたくさんのlogの最後に
“`
‘require’:cannot load such file — nokogiri/nokogiri (LoadErr
Ruby on railsをdockerで環境構築
railsの環境構築を初学者でもわかりやすいように説明します!
Laravelよりはシンプルで理解しやすかったです。
記事もたくさんありました。#dockerのインストール
僕が実際に参考にした記事です
・[Macの方](https://qiita.com/zaki-lknr/items/db99909ba1eb27803456)
・[Windowsの方](https://qiita.com/zaki-lknr/items/db99909ba1eb27803456)######インストールできたかの確認
ターミナルを開いて確認しましょう!“`:terminal
$ docker -vDocker version 20.10.8, build 3967b7d
“`“`:terminal
$ docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
G
Rspec VCRの使い方(stubされているかどうかの確認、動的なパラメータがある場合のcassetteのマッチング、動的にcassetteの内容を変更する)
# 概要
VCRを使ったことがなく、かなりハマってしまったので、自分用にメモ
インストール方法などは他に山ほど記事があるので、そちらを参照してください。# 前提
– request spec
– APIのテストではなく、request specでテストしたいアクション内でAPIを呼び出しており、そのAPIをstubしたい# stubされているかどうかの確認
他の方が書いてくださったものを拝借spec_helper.rbに以下を記載
“`rb
VCR.configure do | c |
…# ここから
[ “recordable”, “stubbed” ].each do | method |
c.after_http_request(“#{method}?”.to_sym) do | request, _response |
puts “- VCR – #{method} – [#{request.method}] #{request.parsed_uri}”
unless request.externally_stubbe
ターミナル起動時に/Users/ユーザー名/.zshrc:1: command not found: rbenvと表示されるのを消しさる
ホームフォルダーの隠しファイル.zshrcを開く
eval “$(rbenv init -)”
export PATH=”/usr/local/opt/~を全て消して上書き保存
私はこれで表示されなくなりました。
参考にした記事
https://teratail.com/questions/272063
docker composeが起動できなくなった話。
##はじめに
docker compose upでMySQLのコンテナが急に起動しなくなった時のことと、その解決策について備忘録として投稿します。##開発環境
docker [20.10.6]
ruby [2.7.3]
ruby on rails [6.1.4.1]
MySQL [8.0]##事象について
railsアプリケーション開発中に、新たにモデルを追加したので、以下を実行。~~~bash:terminal
docker compose down #コンテナを削除
⠿ Container rails_portfolio_web_1 Removed 0.2s
⠿ Container rails_portfolio_db_1 Removed
rails データの並び替えまとめ
orderの使い方がうろ覚えだったので忘備録
“`ruby:
User.all.order(id: “DESC”) # 最後から並べてくれます
User.all.order(:id) # 指定なしなら最初から並べてくれます
User.all.order(id: “DESC”).limit(3) #3件のみ表示します。多すぎる時に使うと良き。
“`
データを見やすくするGemを入れてない時は“`ruby:Gemfile
gem ‘hirb’
gem ‘hirb-unicode’
“`
bundle installしやす“`ruby:
$bundle install
“`
hirbを有効にしやす“`ruby:
$rails c
irb(main):001:0> Hirb.enable
=> true
“`
見やすくなりましたね!mysqlで見るまでもない時にドゾー。
railsチュートリアル第八章 現在のユーザー
###現在のユーザー
今度はそのユーザーIDを別のページで取り出すことにしましょう。####セッションに含まれる現在のユーザーを検索する
app/helpers/sessions_helper.rb“`rb
module SessionsHelper# 渡されたユーザーでログインする
def log_in(user)
session[:user_id] = user.id
#sessionメソッドで作成した一時cookiesは自動的に暗号化される
# ユーザーのブラウザ内の一時cookiesに暗号化済みのユーザーIDが自動で作成
end# 現在ログイン中のユーザーを返す(いる場合)
def current_user
if session[:user_id]
# ログインしているユーザーが有効か?
# このどちらかの状態の場合、Cookieの有効期限をブラウザ終了時にしても、
# Chrome側の仕様でCookieを保持し続ける
@current_user ||= User.fi
railsチュートリアル第八章 ログイン
##ログイン
Sessionsコントローラを生成した時点で既にセッション用ヘルパーモジュールも自動生成されています
Railsのセッション用ヘルパーはビューにも自動的に読み込まれます。
どのコントローラでも使えるようになります
実際にログイン中の状態での有効な値の送信をフォームで正しく扱えるようにします。
####ApplicationコントローラにSessionヘルパーモジュールを読み込む
app/controllers/application_controller.rb“`rb
class ApplicationController < ActionController::Base include SessionsHelper end ``` ###log_inメソッド 事前定義済みのsessionメソッドを使って、単純なログインを行えるようにします sessionメソッドで作成された一時cookiesは、ブラウザを閉じた瞬間に有効期限が終了 ####log_inメソッド app/helpers/sessions_helper.rb ```rb module Sessi
ターミナルとは何か!
#①.結論!
ターミナルは、PCに命令をすることができるツールです!
環境構築を実行するには[コマンドライン]というツールが必要となります!
Macにデフォルトでインストールされているコマンドラインがターミナルです!
#②.コマンドライン
コマンドライン (または コマンドラインインタフェース:CLI )とは、コンピュータに対してキーボードからコマンドという文字を打ち込んで操作を行うツールです!
#③.GUI(Graphical User Interface)
コマンドラインとは対照的に、グラフィックを用いて操作を行う仕組みを グラフィカルユーザインタフェース(GUI) といいます!
例えば、「マウスでファイルをダブルクリックして開く」という操作など、普段PCで行う操作のほとんどはGUIで行なっていることが多いようです!
GUI = グラフィックを使用して、コンピューターの操作を行う方法!直感的に操作できる!
例、マウスでアイコンをクリックして操作できる!
CLI = キーボードを使用してコンピューターの操作を行う方法!コンピューター側の反応も文字によって出力され
has_many関連作成時に使えるようになるメソッド
# has_many
モデルにこれを指定することで関連先のモデルのオブジェクトのCRUD処理を簡単にすることができる。その時に使うメソッドの挙動についてまとめる。# colletion
関連先のオブジェクト(objects)を返す。# collection << (object, …) collectionにオブジェクトを1つ以上追加でき、自動で外部キーが設定される。この操作は、親のオブジェクトが新しいレコードでない限り、**即座**にSQL update操作が発火され関連先オブジェクトのvalidationやcallbackも走る。 https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-3C-3C # collection.delete(object, …) 基本の動作としては、objectの外部キーをNULLに設定する。加えて、`dependent: :destroy`が指定されている場合、ActiveRecordを通して`destroy`が実
【RSpec】モックを使用したテスト
##環境
Ruby 3.0.2
Rails 6.1.4.1##モックを使ったテスト
“`spec.rb
describe ‘XXXXX:XXXX’ do
#モックを作成
let(:slack_client_mock) { double(‘slack client mock’) }
subject(:task) { Rake.application[‘XXXXX:XXXX’] }before do
#chat_postMessageメソッドが呼ばれたらモックを返すように実装を書き換える
allow(::Slack::Web::Client).to receive(:new).and_return(slack_client_mock)
allow(slack_client_mock).to receive(:chat_postMessage).and_return(true)
endit ‘モックのテスト’ do
expect(slack_client_mock.chat_postMessage).to eq(t
VsCodeで@も含めて選択できるようにしたい。
#今回の目標
VsCodeで@も含めて選択できるようにしたい#手順
vscode画面にて
①左上のファイル
②ユーザー設定
③赤丸をクリック
![b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539538/4288b640-a505-cdc3-8674-717614a835b3.png)④設定setting.jsonに追記
“[ruby]”: {
“editor.wordSeparators”: “`~!$#%^&*()-=+[{]}\\|;:’\”,.<>/?”
},おわり
wheneverにおいてのcron設定
##環境
Ruby 3.0.2
Rails 6.1.4.1
Docker version 20.10.7
docker-compose version 1.29.2##cronとは
多くのUNIX系OSで標準的に利用される常駐プログラム(デーモン)の一種で、利用者の設定したスケジュールに従って指定されたプログラムを定期的に起動してくれるもの。https://e-words.jp/w/cron.html
##cronの設定
– wheneverをインストールしてあることを確認して下記の設定
– cronはコマンド“`’分 時 日 月 曜日’“`で設定
– 「月曜〜金曜の19時」に実行したい“`config/schedule.rb
…
every ‘0 19 * * mon-fri’ do
rake ‘namespace名:task名’
end
“`設定内容を確認
“`
% docker-compose exec app bundle exec whenever
“`cronにデータを反映
“`
% docker-compose exec
Rails5技術者認定ベーシック試験に落ちてきた!
rails5ベーシック試験普通に落ちました。。やったこととか、この箇所がテストに出てきたなとか覚えている限りでメモします。
結果21/40 = 51%くらい?
合格まで、あと7問足りませんでした。ちなみにrails5の試験って模擬試験とか問題集なくて、仕方なくrails4ブロンズの模擬試験回してたんですけど、こちらで5回連続900点台とかとってもダメダメでした。
rails4技術者認定ブロンズ模擬試験サイト:https://diver.diveintocode.jp/dive_into_examテスト内容としては、これ分かる! というような基本的な部分も割と出ています。
多分そういうところで得点を稼いでいます。
分かったか怪しいところとしては・actionやmodelやjobの先祖のどこが何を継承しているのか。
(::Base付くんだっけ? とか正解はこちらhttps://railsguides.jp/upgrading_ruby_on_rails.html#rails-4-2%E3%81%8B%E3%82%89rails-5-0%E3%81%B8%[
RubyもRailsもSQLも知らんC++erですがいきなり戦いを挑んでみた
## はじめに
これまでC++、JavaScirpt、C#、Rustなどなどいろいろな言語を触ってきましたが、Rubyはほとんど触る機会がありませんでした。
またデータベースも`SELECT`文というのがあるくらいの知識しか持っていませんでした。ところでいろいろありお仕事で以下の新しい要素~~しかない~~に満ち溢れている領域への挑戦をすることになりました。
– Ruby
– Rails
– Active Record
– ActionView
– etc
– Rspec
– Factory Girl
– MySQL無事にRailsチョットワカルになれたと思うのでそこで得た知見をまとめてみようかと思います。
## 環境構築
環境構築のはまりポイントもあったのですが職場の手順書が改善されてしまったので(いいことだけど)、書くモチベがないので割愛します。
## haml入門
“`haml
– content_for :main_pane do
= render ‘new’, :setting => @foo_setting
= r