- 0.0.1. rails5 progate 整理メモ
- 0.0.2. 【個人開発】面倒な献立作りから解放し、レベルを上げて料理を楽しむレコメンド献立アプリを作った話
- 0.0.3. 【Rails】Dockerで環境構築
- 0.0.4. windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
- 0.0.5. ローカルからDocker内に入るコマンド
- 0.0.6. Ruby on Railsでアプリを作る準備をする
- 0.0.7. progate 整理 メモ
- 0.0.8. 【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
- 0.0.9. エラーが出ないエラー
- 1.
- 1.0.1. [Rails6] AmazonLinux2 で SQLite3 を使用する方法
- 1.0.2. 【mac】 docker + rails + mysql で環境構築
- 1.0.3. authenticate_user!メソッドの使い方
- 1.0.4. Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
- 1.0.5. 【Rails 6】ActiveJob + S3 + Lambda + Slack で実現する非同期 CSV ダウンロード
- 1.0.6. 入社2週間の新人が研修で社内アプリを作った話
- 1.0.7. 新規Railsプロジェクトの作成〜localhostに接続するまで
- 1.0.8. railsチュートリアルをなるべく嚙み砕く 1章
- 1.0.9. cannot load such file — sasscエラーについて
- 1.0.10. accepts_nested_attributes_for を使ったフォームで意図しないユニークバリデーションの発生を回避する方法
- 1.0.11. 開発勉強(controller)
rails5 progate 整理メモ
# ユーザー名を表示させる
問題を出題されたすぐに“`application.html.erb“`が表示されたのでここに書けばいいのか迷った。
それは“`users_controller.rb“`にインスタンス変数に代入させてそこでhtmlに表示されば良いのかどうかと考えたからだ。
結果“`users_controller.rb“`に@userが入っていたのでこの名前のインスタンス変数を使えないので
htmlに直接書いた。
今思うと別の名前のインスタンス変数を作れば良かったかなと思った。
“`application.html
.
.
.
【個人開発】面倒な献立作りから解放し、レベルを上げて料理を楽しむレコメンド献立アプリを作った話
![fun_coo_app_top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2459618/fe6096ad-f0fb-8f0c-e72b-664f385a191b.png)
**こちらの記事を訪れていただき、ありがとうございます。**
この度、タイトルにもある通りポートフォリオとして **「面倒な献立作りから解放し、レベルを上げて料理を楽しむレコメンド献立アプリ(FunCooApp)」** を開発しました。こちらの記事では、**アプリの制作過程や実際の機能など** を紹介していきます。
**アプリの使用イメージは『[主な機能](#主な機能)』で確認することができます。**## 簡単な自己紹介
– 神奈川県在住の24歳、男
– 2月前後にRubyの学習を始め、2月中旬からRailsの学習を開始(総学習継続130日[執筆現在])
– 同時に基本情報技術者試験の学習も並行し4月末に受験(スコアレポートでは[合格ライン]でした)
–
【Rails】Dockerで環境構築
Dockerを利用してrailsを起動させる方法を備忘録として
# 前提条件として
開発に使用するPCに Docker をインストール。
[Docker公式](URL “https://www.docker.com/”)次に任意のファイルを作成。
ここでは`rails-docker`としたが、何でもok
“`
$ mkdir rails-docker
$ cd rails-docker
“`# 必要なファイルの作成
まずは rails-docker ディレクトリローカルの中に
以下の 5 つの空ファイルを作成する・Dockerfile
・docker-compose.yml
・Gemfile
・Gemfile.lock
・entrypoint.sh下記コマンドを打てば一回で作成可能
“`
$ touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh}
“`# Dockerfile を編集
※rubyのバージョンは要確認
“`ruby:Dockerfile
FROM
windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
## はじめに(経緯など)
macのローカル開発環境で動かしていたものを、windows上でも動かしたかったのでやってみた。
いろいろな記事を参考にまとめたものになるので、単に構築したいだけなら他の記事のほうがさくっとできるかもしれない。
初学者の自分が書いていいものか迷ったが、このへんの情報がかなり少なく感じたこともあって書いてみることにした。
自分の備忘録的要素が強いです。
ちなみに、作業時間の目安は1~2時間程度です。## 目次
– 必要なアプリのインストール
– vagrantのセットアップ
– vagrantfile書き換える
– 環境構築
– コンパイラおよび必要なツールをインストール
– rubyのインストール
– railsのインストール
– sqliteのインストール
– node.jsのインストール
– mysqlサーバーとクライアントのインストール
– 補足
– rails sで構築できているか確認
– macからgithubで持ってくる場合
– rails newで新しく作る場合
–
ローカルからDocker内に入るコマンド
Dockerでの開発環境が終わり、Railsの基本であるモデルやコントローラー、ビューを作成するコマンドを入力しようとしたが、ターミナルで
homesというコントローラ作成のコマンドを入力すると
“`言語:ターミナル
rails g controller homes
“`このようなエラーが出た。
Rails is not currently installed on this system. To get the latest version, simply type:
sudo gem install rails
You can then rerun your “rails” command.ローカルでこのコマンドしてもダメだと気づき、ドッカー内に入らないといけないと認識した。
そこで調べたところ、下記サイトに行きついた。
https://qiita.com/Keitaroooo/items/a30bf4eb9310d7b3f7cdこのサイトにある通りに進めた。
ドッカー内に入る方法は2つ
一つ目は
# dockerコマンド“`言語:ターミナル
dock
Ruby on Railsでアプリを作る準備をする
毎回どうだっけと忘れてしまうので、Ruby on Railsのアプリを立ち上げるところまでをまとめました。備忘録です。
## railsをインストールする
Bundlerのインストール
“`
gem install bundler
“`
Railsのインストール
“`
gem install rails
“`## rails new コマンドでアプリケーション作成の準備
webpackerをインストールする
“`
rails webpacker:install
“`
rails new コマンド
cdコマンドでPC上のアプリを作成したいディレクトリに移動し
“`
rails new アプリケーション名
“`
成功した場合、ターミナルに以下のように表示されます。
![スクリーンショット 2022-05-15 17.37.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602010/7673abed-5b23-632f-65d3-086668ca6551.png)※rail
progate 整理 メモ
# ログアウト機能を作成する
ログインするときに“`session[:user_id]“`に代入していたから。
これからidを空にすればいいのかな?
“`nil“`にしていたことを思い出した。## ログアウトのリンクを作成
“`application.html
.
.
.<%= link_to("ログアウト", "/logout") %> .
.
.
“`
## ルーティングを設定
“` routes.rb
.
.
.
get “logout” => “users#logout”
.
.
.
“`
## サーバーのレスポンスのアクションを設定
“`users_controller.rb
class UsersController < ApplicationController . . . def logout @session[:user_id] = nil flash[:notice] = "ログアウトしました" redirect_to("/login")
【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
# はじめに
どうも、最近未経験からエンジニア転職をしたもきおです。
現役エンジニアの方にオススメされる本で一番紹介されると言っても過言ではない本が「リーダブルコード」。私自身も未経験時代から読んでみたはいいものの後半にいくにつれ「あれ?思ったよりムズくね?初心者向けじゃないやん」と思い本を閉じてしまいました。今回入社後改めてCTOにおすすめしていただき、読み切ったのでここでアウトプットしていきたいと思います。
## そもそもなぜ読むのが難しいと感じるのか「リーダブルコード読むのが難しいとか何いってんの??」という方はこの章を読む必要がないかなと思いますが少なからずこの本が難しいと感じる人は一定数いるのかなと思っております。
この本を自分が難しいと感じた理由としては2点。
1.サンプルコードがJavaScriptやC+
エラーが出ないエラー
本日も宜しくお願いします。
さて今日は「エラーが出ないのにシステムが動かない」案件に遭遇して困っている(現在進行形)というものです。
今回は凄くシンプルで、「フォームを使った送信機能の実装です」
あるテキストを入力し、送信を押したらそのテキストが表示される、というシンプルな物のはずなんですが、、、
書いたコードは以下
index.html.erb
“`rails.qiita.rb<%= @title %>
<%= @msg %>
“`
hello_controller.rb
“`rails.qiita
[Rails6] AmazonLinux2 で SQLite3 を使用する方法
# 動機
– Cloud9のAmazonLinux2 環境でRails6以上を使用しようとすると、「SQLite3のバージョンが古い」とエラーが出る。
“`terminal
$ rails db:migrate
Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8.
“`# 原因
– AmazonLinux2にデフォルトでインストールされているSQLite3のバージョンが「3.7」
– Rails6以上を動かすには、バージョン「3.8」以上が必要# 目的
– 以下の記事を参考にSQlite3のバージョンを上げる
(正確にはバージョン「3.8」以上をのSQLite3をインストールし、
Railsアプリで新しくインストールしたSQLite3を使用するようにする)
> https://blog.serverworks.co.jp/tech/2020/01/19/rails6/– 各操作の詳細をなるべく理解する
# 環境
## Ruby version
“`
$ ru
【mac】 docker + rails + mysql で環境構築
# 【mac】 docker + rails + mysql で環境構築
【rails環境構築】docker + rails + mysql で環境構築(初心者でも30分で完了!)https://www.youtube.com/watch?v=Fq1PH0Gwi8I
の動画を見て環境構築の必要コードとエラー対処をまとめてみました。## 作業フォルダを作成移動
mkdir sample_app
cd sample_app
## ファイルを作成 中身はテキストエディタを開いてコピペ
https://hackmd.io/RkiiOvQZRii8qdlzoQwaRg?viewtouch Dockerfile
touch Gemfile
touch Gemfile.lock
touch docker-compose.yml
## imageの構築とコンテナの構築・起動docker-compose run web rails new . –force –database=mysql –skip-bundle
docker-compose build## config/d
authenticate_user!メソッドの使い方
## どんなメソッドか?
ログイン状態によって表示するページを切り替えるメソッドです。
ログインしていないユーザーを、ログイン画面に遷移したい場合に使います。
before actionで呼び出すことにより、コントローラーのアクションを実行する前に、ユーザーがログインしていなければログイン画面に遷移することができます。“`ruby
before action authenticate user!
“`## onlyの後にアクションを指定した場合の例
“`ruby
before action authenticate user!, only: [:new, :edit]
“`
上記の場合、ログインしていないユーザーがnewアクションとeditアクションを実行した場合のみ、ログイン画面に遷移することができます。
only以外にもexpectの後にアクションを指定することで、ログインしていないユーザーが指定したアクション以外を実行した場合に、ログイン画面へ遷移させることもできます。
Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
M1 Macbookを使ってポートフォリオを作ろうと思い、Virtual Boxで開発環境を作成しようとするとVirtual Boxが使えないことが発覚したので、Dockerを使って開発環境を構築しようとした。
しかし、色んなサイトの作成方法を真似しても上手くいかず、Dockerの公式ドキュメントを参考にしたところ、Yay! You’re on Rails!の画面を出すことができた。
手こずってしまった原因がDockerへの理解不足だったため基本的な概念を備忘録として記載しようと思う。
表現が不適切なところも多々あると思うので、ご指摘くだされば幸いです。まずはイメージ図を頭に入れる
![スクリーンショット 2022-05-14 22.31.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2654361/101cda71-0ae6-cd6a-73d0-219009c17c04.png)
引用
https://coinbaby8.com/docker-beginner.htmlDocker
【Rails 6】ActiveJob + S3 + Lambda + Slack で実現する非同期 CSV ダウンロード
## 概要
– 大容量の CSV を出力をしようとした際、レスポンスが返ってくるまでの待ち時間が苦痛
– 最悪、タイムアウトエラーになりかねない
– とりあえずレスポンスだけ先に返しておき、実際の CSV 出力処理はバックグラウンドで非同期処理するみたいな事がしたい
– ActiveJob + S3 + Lambda + Slack を使う事でそれが実現できそう軽めの CSV 出力であれば何ら問題無いのですが、サービスの運用が長続きしてたくさんのデータが蓄積すると、それらを一気に出力するのはなかなか骨が折れたりします。
実際、自分が担当しているサービスでも先日ついに処理に時間がかかりすぎてタイムアウトエラーになるといった事象が発生しました。
もちろん、 SQL の見直しだったり根本的な部分においては他にも色々やるべき事はあるかもしれませんが、とりあえず手っ取り早く対応するために非同期での CSV ダウンロードを実装してみました。
### 同期処理の場合
![同期.gif](https://qiita-image-store.s3.ap-northeast
入社2週間の新人が研修で社内アプリを作った話
## 導きのはじまり
部門長「研修の一環として、社内で実際に運用するアプリを作ってもらおうと思う」僕「え・・・? 研修なのに実際に使うものを作るんすか? まだ入社して2週間なんですが・・・」
部門長「実際に運用するものを作るから研修になるんだよ? 多少バグってもいいから動くものを作ろう!」
僕「oh…」
部門長「じゃあ、どんなアプリにするか一緒に考えていこうか」
## 自己紹介
みなさん初めまして。
エンジニア1年目の小林と申します。この記事を見てくださっている方々の中には、エンジニアに転職しようと悩んでいる方、エンジニアの新人研修って何をするんだろうと思っている方はいませんでしょうか?
ここでは、僕が今の会社にエンジニア転職して、最初の研修で行ったことをご紹介します。
新人研修の一モデルとして参考になれば幸いです。## ****開発環境****
Ruby on Rails
## ****この記事の対象読者****・エンジニアに転職しようと考えている方
・エンジニア転職のために勉強中の方## 入社前 ~勉強編~
### 著者のスペック
・年齢26歳
新規Railsプロジェクトの作成〜localhostに接続するまで
毎回手順を調べては忘れるので、備忘録。
# 1.Railsをインストールする
“`
$ mkdir rails-tutorial
$ cd rails-tutorial
$ bundle init
Writing new Gemfile to /Users/hogehoge/rails-tutorial/Gemfile
“`作成されたGemfileを編集。railsのコメントアウトを外す。
“`diff_ruby:Gemfile
# frozen_string_literal: true
source “https://rubygems.org”git_source(:github) {|repo_name| “https://github.com/#{repo_name}” }
– # gem “rails”
+ gem “rails”
“`“`
$ bundle install –path vendor/bundle
“`
# 2.Railsプロジェクトを作成する
今回はDBをMySQLにして作成。
“`
$ bundle exec rails new
railsチュートリアルをなるべく嚙み砕く 1章
今まで何回かチュートリアルに挑みましたが全て挫折しました。
挫折した原因は###### なんとなくの理解で進めてしまった。
これが原因でモチベーションの低下が始まり、挫折というルートを何回も辿っています
今回こそは全部やりきるために、自分なりに噛み砕いて理解し、
###### 人に説明できるようになったら進む
ことを意識してやりたいと思います他の方のための記事にもなったらいいな、、
##### 解釈が間違っているところがあれば教えていただきたいです!!# 第一章
環境構築ですね
私は ubuntu on Windowsを使ってrailsの環境構築をしましたhttps://qiita.com/ksh-fthr/items/64a4e86c8bad08322c94
こちらの記事が私が環境構築したやり方と同じです
1.3まで飛ばします
### 1.3
ここで
cd やmkdirが出てきます。
主要なUnixのコマンドたちですね
cd は change directory の頭文字をとったもので ディレクトリを移る
mkdir は make directory の略で
cannot load such file — sasscエラーについて
本日も頑張っていきましょう。宜しくお願いします。
こんなエラーが出ました。
![スクリーンショット 2022-05-14 11.35.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607524/919f091c-899c-dc75-4afe-b8192e41f5bc.png)どうやらこれはRails7以降で起きるエラーのようです。
従来通りにCSSを呼び出すとこのエラーが発生するようです。以下対応をすると解決できるようなので試してみます。
“`gemfile.qiita.rb
# gem “sassc-rails”
“`この、コメントアウト(#)を削除して、ターミナル上で
「bundle install」を実行してみます。無事、エラーが解消されました!
accepts_nested_attributes_for を使ったフォームで意図しないユニークバリデーションの発生を回避する方法
## 解決したい問題
Railsでは `accepts_nested_attributes_for` を使って、`has_many`関連する子レコードを1つのフォームで更新することができます。
イメージとしてはこんな感じです。![sample.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/fbd1d0e0-3c36-dcaf-715c-a787fbce39b4.jpeg)
上の画面では以下のようなBookモデルと、それに関連するAuthorモデルを更新するフォームです。
(本と著者はmany-to-many関連だろう、というツッコミが来そうですが、説明のために単純化してるので気にしないでください)“`ruby
class Book < ApplicationRecord has_many :authors, dependent: :destroy accepts_nested_attributes_for :authors, reject_if: :all_bl
開発勉強(controller)
今回も頑張っていきましょう。
今日は、前回なんとかサーバーの立ち上げまでできたので、実際に開発に向けて勉強していきます。
⭐️ MVC
・Railsは「MVC」というアーキテクチャーを使ったフレームワーク
・MVCというのは、「Model」「View」「Controller」の略
・この3つの中で最も重要なのは「Controller」
⭐️ コントローラーを作成する
ターミナル上で前回作成したRailsAppへ移動し、以下コマンドを実行する
“`ruby:qiita.rb
rails g controller 名前
“`
※名前は半角英字とすること
“`ruby:qiita.rb
create app/controllers/hello_controller.rb
invoke erb
create app/views/hello
invoke test_unit
create test/controllers/hello_controller_test.rb