- 1. Rails 7.0.1 のプロジェクトで RSpec 実行環境をセットアップ
- 2. {自分用メモ}Githubにプッシュ&Herokuにデプロイまで
- 3. 【Rails】paramsについて
- 4. (初心者)Rails Active Storage 画像が割れて表示されてしまった件
- 5. 新規Railsアプリを作成するには
- 6. クラスとインスタンスの違いを簡潔にまとめる
- 7. active_hashで保存した都道府県の検索機能について(ransack使用)
- 8. rails 6のアプリをgit clone後に遭遇したエラー
- 9. 【Rails】ポートフォリオ制作「バイク専用SNS」KoKo-iiYo
- 10. sidekicq使って定期的なメール配信(rails/Docker/Heroku/circleCI)
- 11. Amazon Lightsailのオブジェクトストレージバケットにユーザー画像を保存する
- 12. Railsのモデル同士の関連付けについて
- 13. Carrierwaveで公開されているファイルURLからデータを保存する
- 14. rails new 時に “ActiveSupport::EncryptedFile::InvalidKeyLengthError” エラーが出た時の対応
- 15. Look Back – 振り返る サブスク管理 –
- 16. 【Rails】(後編)投稿のコメントにさらにコメントしよう(備忘録)
- 17. 【Rails】(前編)投稿のコメントの詳細ページを表示する(備忘録)
- 18. Ruby 2.5.0コンテナでRails6の開発環境を作るときのトラブルシューティング
- 19. 【Rails 6】Formオブジェクトでシンプルな検索機能を作ってみる
- 20. Model-View-Contoroller(MVC)メモ
Rails 7.0.1 のプロジェクトで RSpec 実行環境をセットアップ
Ruby 3.0 x Rails 7 のプロジェクトで RSpec の実行環境を作る方法をメモ的に記します。
具体的には **RSpec と FactoryBot** gem をインストールして設定していきます。“`
# 環境情報
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]$ rails -v
Rails 7.0.1
“`結論からいうと Rails 7 独自の設定は特に必要ありません。
# プロジェクトを作成
Rails 7 では `rails new` のオプションでフロントエンド関連の色々を指定できますが、特に指定してません。“`
$ rails new rails7_rspec
“`# RSpec 環境用の gem をインストール
rails new した時に rails7_rspec ディレクトリに生成された Gemfile に追記します。“`
group :development, :test do
gem “debug”, pla
{自分用メモ}Githubにプッシュ&Herokuにデプロイまで
開発環境
mac OS バージョン11.6
エディタ
VScode“`
% rails new toy_app
% cd toy_app
“`group :production do
gem ‘pg’, ‘1.1.4’
end“`
% bundle config set –local without ‘production’
% bundle install
“`bundle install(もしくはbundle update)が完了したら、1.2.2でセットアップしたYarnを使ってWebpackerをインストールします。もしWebpackerを既にインストール済みの場合は設定を上書きするかどうかを聞かれるので、そのときは「no」と入力してください。(自分は表示が出ませんでした)
“`
% rails webpacker:install
“`最後に、GitでこのToyアプリケーションをバージョン管理下に置きます。
“`
% git init
% git add -A
% git commit -m “Initialize repositor
【Rails】paramsについて
##paramsとは?
→データの入れ物##どんなデータが入ってるのか?
基本的には以下の2種類の方法で収集されたデータが入ってる。
・投稿フォームなどからPOSTで送信されたデータ
・getのクエリパラメータ>【クエリパラメータとは?】
例えば、基本のURLが「https:// ○△×□.jp/」だとして、基本のURLにクエリ文字列(URLパラメーター)を加えると「https:// ○△×□.jp/?●=▲×■&○=△×□」となります。
「?●=▲×■&○=△×□」の部分が、クエリパラメーター(URLパラメーター)です。
引用:https://online.dhw.co.jp/kuritama/query-string/
(初心者)Rails Active Storage 画像が割れて表示されてしまった件
##実行内容
Ruby on Rails にてアプリを作成中。
Active Storageを使ってアップロード済のユーザーアイコン画像を、
以下のコードにより表示させようとした。“`rb
<% if @user.avatar.attached? %>
<%= image_tag @user.avatar, size: "100x100" %>
<% end %>
“`
##結果
以下のように割れた画像が表示された。
![スクリーンショット 2022-01-09 1.33.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2449886/08a548e6-dae1-1190-a0bc-b51a0cf84190.png)##解決策
以下のようにコードを修正し、うまく表示された。“`rb
<% if @user.avatar.attached? %>
<%= image_tag url_for(rails_blob_path(@user.avatar)), size: "10
新規Railsアプリを作成するには
まずはターミナル上で、下記を実行する。
#新規アプリ名(例:tweet)を入力、 -dオプションでMySQLを使用することを明示
% rails new tweet -d mysql
クラスとインスタンスの違いを簡潔にまとめる
# はじめに
どんどんアップデートしていく記事にしていこうと思っています。# 結論
“`
クラス全体で共通した振る舞いを示す
クラスから生成されたインスタンスの振る舞いを示す
属性と属性値の関係
属性はみんなが共通で持っている項目で属性値は個別で異なる
active_hashで保存した都道府県の検索機能について(ransack使用)
###ransackを用いた検索機能実装
今回は、現在作成しているSNSアプリでransackを使用して、登録されているユーザーの一覧ページから登録地域で絞り込みをする機能を作成していました。
その中で、色々エラーで躓いたため学習用に投稿しておこうと思います。###gemのインストール
“`
gem ‘ransack’
“`
###コントローラーの変更
“`
class UsersController < ApplicationController def index @users = User.paginate(page: params[:page]) @q = User.ransack(params[:q]) @users = @q.result(distinct: true) @user_prefecture_id = Prefecture.all end end ``` ###viewの設定 ``` <%= search_form_for @q do |f| %>
<%= f.label :prefect
rails 6のアプリをgit clone後に遭遇したエラー
# rails6 git clone後の手順
### やりたいこと・背景
+ 実装途中のrails6のアプリをgit cloneしたい
+ 間違えて、ローカルのリポジトリを消してしまった際に~~そんなこと滅多にない~~githubにpushしていればなんとかなる
+ 昔作っていたrails6のアプリ実装を再開したい
+ などなど—
## ざっくり手順
### 1. `Github`でgit cloneしたいリポジトリをコピー
“`terminal.
$ git clone クローンしたいリポジトリのurl
“`### 2. `rm -rf Gemfile.lock`でgemのバージョン依存関係をなくす
> git cloneしてきたrailsのアプリは、gemのバージョンの依存関係が固定されてしまっているため。
そのまま、bundle installするとエラーが出る。:::note info
cd アプリ名
で、railsアプリのディレクトリに移動した後
:::“`terminal.
$ rm -rf Gemfile.lock
“`私は、bu
【Rails】ポートフォリオ制作「バイク専用SNS」KoKo-iiYo
#【Rails】ポートフォリオ制作「バイク専用SNS」KoKo-iiYo
##はじめに
DMM WEB CAMP通学中、3ヶ月目に制作したポートフォリオについて、サイト概要・実装機能などまとめます。
sidekicq使って定期的なメール配信(rails/Docker/Heroku/circleCI)
# やりたいこと
自作の「[家計簿アプリ](https://www.kyodokoza.com/)」の中で、
定期的(今回は毎週月曜の午前9時)に「支出のまとめ」をメールで配信する。※完成イメージはgithubのrepositoryを参照してください。
https://github.com/matsu1226/kyodokoza
# 環境
ruby 2.7.4
rails 6.1.4
アプリケーションは、Docker,circleCIを使って、Herokuにデプロイ済み。“`yml:docker-compose.yml
version: ‘3’
services:
db:
image: mysql:8.0
command: –default-authentication-plugin=mysql_native_password
volumes:
– mysql_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
web:
Amazon Lightsailのオブジェクトストレージバケットにユーザー画像を保存する
## やりたいこと
Railsでフランス語のWebアプリを個人開発してます。
developmentではS3で画像を保存していたのですが、本番デプロイするにあたり、Lightsailでアプリを運用することにしたのでLightsailのオブジェクトストレージを使うことにしました。12ヶ月無料だって。やったー!
![Capture d’écran 2022-01-08 à 16.46.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/2ae5d000-4007-a379-799a-266b2f8ee56e.png)元々のS3での実装がどうなってたのか、記憶から消えていたのでこの辺を読んで復習するところから始まりました。
https://railsguides.jp/active_storage_overview.html
関連する該当箇所は以下な感じです。
“`ruby:Gemfile
gem ‘image_processing’, ‘~> 1.2’
“`“`ru
Railsのモデル同士の関連付けについて
## 概要
Ruby on Railsにおけるモデル同士の関連付けについてアウトプットしたいと思います。## 環境
ruby: ‘3.0.1’
rails: ‘6.1.4’## 前提
関連付けの説明にあたって下記モデルを前提とします。| モデル | User |
|:-:|:-:|
| id | 1 |
|name|’example_name’||モデル|Post|
|:-:|:-:|
|id|1|
|content|’example_content’|
|user_id|1||モデル|Account|
|:-:|:-:|
|id|1|
|account_number|1234|
|user_id|1|## 関連付けとは
関連付けとは異なるモデル同士をつなげてコードを簡素化するために行うものです。
関連付けを行っていない場合と行っている場合のコードの違いを見てみましょう。
userの投稿一覧を取得するというコードを比較します。– 関連付けを行っていない場合
“`ruby
user = User.find(1)
posts = Post.find_by(
Carrierwaveで公開されているファイルURLからデータを保存する
## やりたいこと
既に公開されている画像のURLからCarrierwaveを介してファイルを保存する。
※ 試したのは画像だけですが他のファイルでもできそう## 結論
“`rb
# CarrierWave の Uploader
class AvatarUploader < CarrierWave::Uploader::Base storage :file end # ActiveRecord class User < ApplicationRecord mount_uploader :avatar, AvatarUploader end User.create!(remote_avatar_url: "https://example.com/***.png") ``` `remote_**_url` に値を指定することによって解決しました。 よくよくみるとgithubのreadmeにもformの例として `remote_**_url` に値をセットする方法が紹介されてました。 https://github.com/carrierwaveuploader/c
rails new 時に “ActiveSupport::EncryptedFile::InvalidKeyLengthError” エラーが出た時の対応
タイミングは rails new に限りませんが、rails でコマンドを叩いた時に以下のように**ActiveSupport::EncryptedFile::InvalidKeyLengthError** が出ることがあったので対処方法を書きます。
“`
$ rails new xxxxx
/Users/yyyyyy/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.1/lib/active_support/encrypted_file.rb:114:in `check_key_length’: Encryption key must be exactly 32 characters. (ActiveSupport::EncryptedFile::InvalidKeyLengthError)
“`“`
# 環境情報
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]
$ rails -v
Rail
Look Back – 振り返る サブスク管理 –
![look back (600 x 300 px)のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257482/9f76c007-820e-5906-4341-cfb6d7cbb05d.png)
作成したオリジナルアプリについて紹介します。
READMEは[こちら](https://github.com/28niwa2108/look-back)# READMEに記載がない項目一覧
下記からジャンプできます。[2.制作背景](#制作背景)
[きっかけ](#きっかけ)
[解決策](#解決策)
[どうしてその仕組にしたのか](#どうしてその仕組にしたのか)
[3.アプリテーマ](#アプリテーマ)
[7.工夫したこと](#工夫したこと)
(GIF画像を追加し、解説をしています)
[8.学んだこと](#学んだこと感想)
[技術編](#技術編)
[マインド編](#マインド編)
[9.Q&A](#qa)
[簡単な振り返りに意味があるのか?](#簡単な振り返りに意味があるのか)
【Rails】(後編)投稿のコメントにさらにコメントしよう(備忘録)
みなさん、こんにちは!
筆者は大学生限定のプログラミングスクール「GeekSalon」でメンターをしています!
興味のある方や話だけでも聞いてみてい方はぜひのぞいてみてください?https://geek-salon.com/?utm_source=Direct&utm_medium=attract&utm_campaign=3Q&utm_content=Fukuoka_B1_3Q
さっそく今回の本題に入っていきます!
今回は投稿の詳細を表示するように、投稿に対してなされたコメントの詳細を表示する機能を実装していきます。##記事を書くに至った背景
筆者は、投稿機能を用いてお店の情報を、投稿へのコメント機能を通じてお店の商品を、コメントへのコメントを通じて商品への口コミを記録できるようなプロダクトを実装しようと思い立ちました!
このようなプロダクトを完成させるためには、①投稿に対するコメントの詳細を見ることができる機能、そして②投稿に対するコメントにさらにコメントできる機能が必要になります。
そのため、コメントの詳細ページを実装する記事、コメントにさらにコメントできる機能を実装す
【Rails】(前編)投稿のコメントの詳細ページを表示する(備忘録)
みなさん、こんにちは!
筆者は大学生限定のプログラミングスクール「GeekSalon」でメンターをしています!
興味のある方や話だけでも聞いてみてい方はぜひのぞいてみてください?https://geek-salon.com/?utm_source=Direct&utm_medium=attract&utm_campaign=3Q&utm_content=Fukuoka_B1_3Q
さっそく今回の本題に入っていきます!
今回は投稿の詳細を表示するように、投稿に対してなされたコメントの詳細を表示する機能を実装していきます。##記事を書くに至った背景
筆者は、投稿機能を用いてお店の情報を、投稿へのコメント機能を通じてお店の商品を、コメントへのコメントを通じて商品への口コミを記録できるようなプロダクトを実装しようと思い立ちました!
このようなプロダクトを完成させるためには、①投稿に対するコメントの詳細を見ることができる機能、そして②投稿に対するコメントにさらにコメントできる機能が必要になります。
そのため、コメントの詳細ページを実装する記事、コメントにさらにコメントできる機能を実装す
Ruby 2.5.0コンテナでRails6の開発環境を作るときのトラブルシューティング
こちらのハンズオンをやっていたところ、いくつかの問題に遭遇したので備忘録。
[Rails アプリケーションをコンテナで開発しよう ! 第 1 回 – まずは Rails アプリケーション作りから](https://aws.amazon.com/jp/builders-flash/202009/container-rails-app/?awsf.filter-name=*all)
## Rails7のインストールに失敗する
記事では Ruby2.5 & Rails6 を使用しているが、現時点(2022/1)での最新版は `7.0.1`。
エラーメッセージにもあるように`7.0.1` ではRuby2.7以上が必要であるため `gem install rails`に失敗する。“`bash
root@810c33297af8:/work# gem install rails
Fetching: concurrent-ruby-1.1.9.gem (100%)
Successfully installed concurrent-ruby-1.1.9
Fetching: i18n-
【Rails 6】Formオブジェクトでシンプルな検索機能を作ってみる
## 概要
記事タイトル通り、Form オブジェクトを使用したシンプルな検索機能を Rails6 で作ってみます。
Form オブジェクトの概念については、以下の記事の表現が非常にわかりやすかったので参考にされてください。
> Formオブジェクトはフォームの責務をカプセル化し、コントローラやビューを疎結合に保つために必要なデザインパターンです。
> ユーザの入力の整形や永続化をコントローラだけで行うと、コントローラが肥大化してしまいます。 この原因はコントローラがモデル層の知識をもちすぎるためにあります。 このときビューもフォームを表示するための知識をもつことになるため、コントローラと同じような問題が起こってしまいます。 このことは単一責任の原則に反し、モデル層の変更がコントローラやビューに影響を及ぼすことになります。
> 逆にActiveRecordモデルにこういった責務をもたせると、今度はActiveRecordモデルがフォームの知識を持ちすぎてしまいます。 フォームという独立した責務があるのであれば、これをひとつのクラスにカプセル化する、というのがFormオブジェクト
Model-View-Contoroller(MVC)メモ
#メソッド名とアプリケーションネームは同じ名前にする
していないとプレビューで
The action ‘goodbye’ could not be found for ApplicationController
と表示される。“`application_controller.rb
class ApplicationController < ActionController::Base def hello #ここ render html: "hello, world!" end end ``` ```routes.rb Rails.application.routes.draw do # For details on the DSL available within this file, # see https://guides.rubyonrails.org/routing.html root 'application#hello' #ここ end ```