- 1. dockerで一回コンテナから出てから作業して、また入り直す。
- 2. RSpecでのテストでカバレッジを確認する方法
- 3. 【デイトラ】Webアプリ開発コースで作成したRailsアプリをRender.comでデプロイする方法
- 4. Railsでto_paramメソッドが呼び出せない
- 5. ActiveModelSerializerを触ってみた
- 6. Dockerを使用してRailsアプリをRenderへデプロイした
- 7. 【Rails】blank?とempty?は空白文字とnilの扱いが異なる
- 8. counter_cacheの導入と使い方
- 9. 【初心者向け】Ruby on Rails webサイトへの表示について
- 10. Rails+docker-compose.ymlで開発環境を作成しようとしたらnode_modulesが行方不明になった件
- 11. Raspberry PiにRailsサーバーを立てて運用する
- 12. Rspec で特定種類のテストだけを対象に before / after を設定する例
- 13. 【Rails7.0】nomethoderror: undefined method ‘raw_filter’
- 14. heroku run rails db:migrateでdbに接続ができないエラーが出た。
- 15. 【Rails】Support for calling #default_scope without a block is removed.
- 16. Railsガイドへコントリビュートするまでの経緯とそこから得られたもの
- 17. 全てのモデルを列挙する
- 18. 【Rails】RSpecでのテスト時に詰まったところ~画像の添付、postリクエスト時のパラメーター付加など~
- 19. Docker, docker-compose, rails を使って、HelloWorld を表示する。
- 20. docker, docker-compose を使って rails 開発を行うときのコマンド
dockerで一回コンテナから出てから作業して、また入り直す。
# コンテナから出て作業するのってどうすれば?
と思ったので書こうと思いました。結論としては、*コンテナ内から出る*
まず、現在コンテナ内にいる場合は、exit コマンドを実行してシェルを終了し、ホストマシンに戻ります。
“`
exit
“`
/ここで諸々作業する*再度コンテナに入る*
その後、以下のコマンドを使って、元の作業していたコンテナに再度入ります。
“`
docker exec -it コンテナ名 /bin/sh
“`
### 流れ
– exit でコンテナ内のシェルから抜ける。
– コンテナが実行中であれば、*docker exec -it コンテナ名 /bin/sh* で再度シェルに接続できる。
これで問題なくコンテナ内に再度入れます!
RSpecでのテストでカバレッジを確認する方法
# はじめに
こんにちは!
社会人一年目の石川です。
記事をご覧いただきありがとうございます。本記事では、RSpecでテストカバレッジを出力する方法についてまとめます。
# 目次
1. [カバレッジとは?](#カバレッジとは)
1. [ツールについて](#ツールについて)
1. [導入手順](#導入手順)
4. [最後に](#最後に)# カバレッジとは
テストカバレッジは、コードのうちどれだけがテストされているかを割合で表したものです。これにより、未テストの箇所を特定できるため、テストがコード全体をどの程度カバーしているかを確認できます。
# ツールについて
カバレッジを測定するための代表的パッケージが`SimpleCov`です。
他にも、以下のようなツールがあります。
##### Coveralls
オンラインでチーム共有をサポートし、継続的インテグレーション(CI)と連携しやすい点が強みです。
##### Codecov
詳細なグラフやレポートを提供し、特にCI/CDパイプラインに強力に統合されます。# 導入手順
今回は`simplecov`の導入手順に
【デイトラ】Webアプリ開発コースで作成したRailsアプリをRender.comでデプロイする方法
## はじめに
いま受講しているデイトラのWebアプリ開発コースでは、合計3つのアプリを作成します(ハンズオンで作成するアプリ + 課題として作成するアプリ × 2)ハンズオン形式でレクチャーされているデプロイ方法はherokuです。
PostgreSQLのアドオンをそれぞれのアプリに使用する必要があるため、
各アプリごとに$5/月かかってしまう計算になります。気持ち的にそのお金があるなら技術書を買いたいので、Renderを使ったデプロイに挑戦してみました。
### 開発環境
– Ruby 2.7.7 => 3.1.0*
– Rails 6.0.6.1 => 6.1.7.8*
– node.js v14.16.1
– PostgreSQL 14
– Windows11
– WSL2(Ubuntu)*もともとのバージョンが古く、Renderでのデプロイに対応していなかったため、アップデート作業が必要になりました
### デプロイまでの流れ
1. デプロイ用の設定(S3の設定など)
1. Renderの登録・設定
1. RubyとRailsのバージョンアップ対応
1. R
Railsでto_paramメソッドが呼び出せない
## 概要
SEO対策の一環として、RailsアプリケーションのURLに含まれる`id`を固有名詞に置き換える実装を行いました。
例えば、以下のようなケースです。“`ruby
# これを
https://spocale.com/fruit/1
# 以下の形式にしたい。
https://spocale.com/fruit/apple
“`
フルーツに関する一覧ページがあり、そこから「りんご」を選択して詳細ページに飛ぶ場合を想定します。このとき、URLの`id`部分を`apple`という固有の文字列に変えたいとします。ただし、既存のURLを突然変更すると、ブックマークなどで保存されている従来のURLが使えなくなる可能性があります。そこで、id付きの従来のURLも維持しつつ、新しい形式のURLも利用できるように実装しました。この記事では、その過程で直面した課題と解決方法についてまとめます。
## 対象読者
– Railsアプリケーションでid付きのURLを固有名詞で表示する方法
ActiveModelSerializerを触ってみた
# はじめに
ActiveModelSerializerを業務で使ったのでざっくりと使い方をまとめようと思います。
誤り等ございましたら、コメントいただけるとありがたいです。# セットアップ
#### インストール方法
– Gemのインストール手順
“`ruby
gem ‘active_model_serializers’, ‘~> 0.10.0’
“`
出力されるjson構造を変更したい場合(defaultはattributes),
config/initializers/active_model_serializers.ファイルを作成し,
“`ruby
ActiveModelSerializers.config.adapter = :json_api
“`
を記述します。#### active_model_serializerとは
– ActiveModelSerializerの概要
ActiveModelSerializerはrailsアプリケーションを簡単にjsonシリアライズするためのgemですシリアライズとは、(W
Dockerを使用してRailsアプリをRenderへデプロイした
この記事は、Dockerを使用してReilsアプリをRenderへデプロイしたいが、エラーが出てデプロイできていない方向けの記事です。
### 環境
Rails 7.2.1
Ruby 3.2.0
PostgreSQL
Dockerを使用### フォルダ・ファイル構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426016/9924e9b7-2d70-3eda-1838-659e929025fc.png)
※Dockerfileはrailsapp内にもう一つあります。### 結論下記の内容でデプロイに成功した。
“`render.yaml
services:
– type: web
name: compassbook
env: ruby
rootDirectory: railsapp
buildCommand: |
echo “Starting build process…”
bundle install
【Rails】blank?とempty?は空白文字とnilの扱いが異なる
## はじめに
`blank?`と`empty?`の違いがよくわからなくなりました。
そこでこの記事では、空白文字と`nil`を切り口に両者の違いを整理します。
## `blank?`と`empty?`は空白文字とnilの扱いが異なる
空白文字と`nil`を順番に確認します。
### 空白文字について
– `blank?`メソッド: `true`と判定
– `empty?`メソッド: `false`と判定“`ruby
rails> ” “.blank?
=> true
rails> ” “.empty?
=> false
“`### `nil`について
– `blank?`メソッド: `true`と判定
– `empty?`メソッド: `NoMethodError`の例外発生“`ruby
rails> nil.blank?
=> true
rails> nil.empty?
/opt/homebrew/lib/ruby/gems/3.3.0/gems/irb-1.14.0/lib/irb.rb:1285:in `full_message’: undefi
counter_cacheの導入と使い方
この記事はプログラミング学習者がアプリ開発中に躓いた内容を備忘録として記事におこしたものです。内容に不備などあればご指摘頂けると助かります。
## 記事投稿の背景
この記事ではXのクローンサイトを作成中にBulletで検知したN+1問題を解決するために実装した内容を紹介します。
機能としては投稿に対するいいねとコメントの数を集計して表示させる機能に関する内容です。
実装当初の内容と修正後の内容を掲載したいと思います。## 実装当初のコード
“`ruby:tweet.rb
class Tweet < ApplicationRecord belongs_to :user validates :content, presence: true, length: { in: 1..140 } has_many_attached :images has_many :favorites, dependent: :destroy has_many :comments, dependent: :destroy has_many :retweets, dependent:
【初心者向け】Ruby on Rails webサイトへの表示について
現在、デイトラでWeb開発を学んでおり、その学習において、学んだことを共有させていただきます!
現在は、Ruby on RailsでWebサイトを作成中です。
![スクリーンショット 2024-09-25 15.09.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3894345/650a3c5b-d9bd-c4a2-af14-ce07b232e71e.png)
どうやってこれらの文字を表示しているのでしょうか?
“`routes.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
get ‘/’ => ‘home#index’
end
“`
ブラウザから get ‘/’ リクエストがきたら、routes.rbで処理が開始され、home#indexが実行されます
Rails+docker-compose.ymlで開発環境を作成しようとしたらnode_modulesが行方不明になった件
# 結論
`.dockerignore`で共有外にしていても`docker-compose.yml`でホストをマウントすると、ホスト側の状態が上書きされ`node_modules`が消えていた。
`docker-compose.yml`の`volumes`に以下のようにしてホストとは独立した`匿名ボリューム`を作成し、上書きを回避する。
“`yml:docker-compose.yml
# ※myappの部分のディレクトリ名は読み替えてください
volumes:
– .:/myapp
– /myapp/node_modules # ホストと独立した匿名ボリュームをマウント
“`
`.dockerignore`で指定していれば除外されると勘違いしていた。
# 顛末
## 1. 要件
新しく作成するプロダクトの開発環境の要件は以下。
– Railsのプロダクト
– Playwrightを利用(特定のサイトをスクレイピングするため)
– docker composeコマンドで起動
– ホストにはnode_modulesの内容を反映したくない
## 2. node_module、消
Raspberry PiにRailsサーバーを立てて運用する
![P_20240924_172516.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72890/ea5e1765-6b95-a2c9-7e62-19679f63e5c9.jpeg)
# 初めに
家庭内で家族が使えるお小遣いアプリをRuby on Railsで作っているのですが、少しでも維持費を抑えるためにRaspberry Piを自宅サーバーにしてその上で動かすことにしました。
ただし、今回はあくまで自宅内でのサービス限定とし外部には公開しません。# 前提条件
– Raspberry Pi 5を使用
– OSインストール、初期設定、ネットワークの設定は済んでいる
– 消費電力を抑えるために無線LANはOFFにしている
– sshで接続できるようになっている# 下準備、環境アップデート
“` bash
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rsi-update
sudo rpi-upda
Rspec で特定種類のテストだけを対象に before / after を設定する例
# 例
system test の全てのテストケースを対象に `before(:each)` の処理をさせる場合
`rails_helper.rb` に以下を設定
“`rb
RSpec.configure do |config|
config.before(:each, :type => lambda { |spec_type| spec_type == :system}) do
…
end
end
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
# プロフィール・経歴
https://github.com/YumaInaura/YumaInaura
【Rails7.0】nomethoderror: undefined method ‘raw_filter’
## 概要
Rails6.1から7.0にアップデートした際、発生したタイトルのエラーに関して備忘録です### エラー内容
“`
NoMethodError: undefined method `raw_filter’
“`### 解決法
エラーが発生した時のスタックトレースを確認したところ `activerecord-import` が怪しかったのでリポジトリを確認したところ最新にしなくてはいけなかったので最新にしたところ解決した
heroku run rails db:migrateでdbに接続ができないエラーが出た。
自分用備忘録です。初心者なので、間違っていることや、理解が違っていることがありましたら、教えていただけると幸いです。
## 問題
deviseでメール認証機能をつけたアプリをherokuにデプロイしようとした際、dbが見つからないというエラーが出た。## 解決方法
database.ymlファイルのproductionに
“`url: <%= ENV['DATABASE_URL'] %>“` を追加する。#### [解決までの過程(記録用)]
deviseで管理者機能をつけたアプリをherokuにデプロイ。
“`ruby
% git push heroku master
“`HerokuのダッシュボードのResourcesからadd on設定
postgresqlを選択データベースの設定が完了したので、
“`ruby
% heroku run rails db:migrate
“`下記のエラーが発生しました。
“`ruby
Running rails db:migrate on ⬢ hidden-journey-8
【Rails】Support for calling #default_scope without a block is removed.
## はじめに
Railsのアップデート中にdefault_scopeを使用している箇所でエラーが出たので、その対応をまとめます。## 問題
コード
“`ruby
default_scope order(“created_at DESC”)
“`エラー文
“`ruby
Support for calling #default_scope without a block is removed. For example instead of `default_scope where(color: ‘red’)`, please use `default_scope { where(color: ‘red’) }`. (Alternatively you can just redefine self.default_scope.)
“`## 解決方法
以下のように修正します。
“`ruby
default_scope { order(“created_at DESC”) }
“`## 参考
https://stackoverflow.com/questions/3
Railsガイドへコントリビュートするまでの経緯とそこから得られたもの
## はじめに
僕はエンジニアになって約1年です。
これまでOSS活動とは無縁だったのですが、ここ1ヶ月くらいでRailsガイドの日本語版・英語版の修正によるOSSコントリビュートが複数回できました。
日本語版(全4件)
https://github.com/yasslab/railsguides.jp/pulls?q=is%3Apr+author%3Akazuyainoue0124+is%3Aclosed+
英語版(全3件)
https://github.com/rails/rails/pulls?q=is%3Apr+author%3Akazuyainoue0124+is%3Aclosed+
どれも誤字脱字を修正しただけですが、この経験を通じてドキュメント修正がOSS活動の第一歩として最適だと肌で感じました。
そこでこの記事では、Railsガイドにコントリビュートするまでの経緯とその過程で得られたものについて、自らの経験をもとにまとめます。
– OSSってなんだか難しそうだけど挑戦してみたい
– ドキュメント修正
全てのモデルを列挙する
# やりたいこと
全てのモデルを列挙したい。
# 方法
“`rb
# 開発環境だとクラスが自動読み込みされる。
# このままだと読み込み済みのモデルしか列挙できないので、明示的に一括読み込みしておく。
# 規模が大きい Rails アプリケーションだと時間がかかる。
Rails.application.eager_load!# 全てのモデルを列挙する。
# ApplicationRecord のような抽象クラスは除外する。
ActiveRecord::Base.descendants.reject(&:abstract_class?)
“`# バージョン情報
※ 現時点での最新のバージョンではありません。
“`rb
RUBY_VERSION
#=> “3.1.2”Rails.version
#=> “7.1.4”
“`
【Rails】RSpecでのテスト時に詰まったところ~画像の添付、postリクエスト時のパラメーター付加など~
## はじめに
ここまる2日かけてRSpecを使ったテストコードを書いていました。
その中で、’この内容をテストしたいけどどう書いたらいいんだろう…?’と思うものがたくさんあったので、まとめておきます。## 少し悩んだテスト内容と記述方法
### Model Spec
#### user_idとpost_idのペアにつけている一意性制約のテスト
“`ruby
require ‘rails_helper’RSpec.describe Like, type: :model do
context ‘同じポストにいいねしようとした場合’ do
let!(:user) { create(:user) }
let!(:post) { create(:post) }let!(:like1) { create(:like, user: user, post: post) }
let!(:like2) { build(:like, user: user, post: post) }before do
like2.save
Docker, docker-compose, rails を使って、HelloWorld を表示する。
## 目的
docker, docker-compose, rails を使って、HelloWorld を表示する。## 環境
EC2 ubuntu## 前提
・Vscode の Remote SSH を使う。
・3000 ポートのポートフォワーディングができている。## 手順
(1)
“`
~$ sudo apt update
~$ sudo apt install docker.io docker-compose
~$ sudo systemctl start docker
~$ sudo systemctl enable docker
~$ mkdir rails_api
“`
vscode で rails_api フォルダに移動
“`
~/rails_api$ docker-compose –version
~/rails_api$ sudo apt remove docker-compose
~/rails_api$ DOCKER_COMPOSE_VERSION=2.20.3
~/rails_api$ sudo curl -SL https://githu
docker, docker-compose を使って rails 開発を行うときのコマンド
## docker コマンド一覧
(1) 一覧
“`
$ docker ps -a
$ docker ps
$ docker images
“`
(2) ログ
“`
$ docker logs
“`
(3) 構築
“`
$ docker-compose stop
$ docker-compose down
$ docker-compose build
$ docker-compose up
“`
(4) 破壊
“`
$ docker container prune
$ docker images prune -a
$ docker images prune
$ docker system prune -a
$ docker volume prune
“`## rails コマンド
(1) ファイル生成
“`
$ docker-compose run web bundle exec rails generate model Hello
$ docker-compose run web bundle exec rails generate