- 1. Sidekiq・Sidekiq-Cronの導入
- 2. Nuxt.js、Auth0でログイン画面作成
- 3. AmazonSNSを使ったpush通知の実装について
- 4. 【selenium】session not created: This version of ChromeDriver only supports Chrome version XXX
- 5. railsがアプリを新規作成できないエラーを治す方法
- 6. migrateのステータス確認
- 7. [Rails]deviseのuser_signed_in?メソッドが常にfalseを返す不具合への対処法。
- 8. rails db:migrateの意味
- 9. 【Docker】Rails + Puma + Nginx + MySQL + React(2)
- 10. vscode rails環境構築時のエラー brew doctor
- 11. 定数だけを切り出したファイルを作り、複数クラスで使えるようにする
- 12. rails7からrails6にダウングレードした
- 13. 【Git】$ git remote add origin リポジトリURL を入力してfatal: remote origin already exists. とターミナルにエラーが表示された時の解決法
- 14. いいね Ajaxにする
- 15. Railsでlink_to deleteが出来ない
- 16. 【Docker】NameError: uninitialized constant Gem::Source 解消法【Rails】
- 17. rails seeds.rbファイル とは
- 18. dbを削除したい
- 19. whereメソッドを使ってDBから取り出すデータを絞り込む
- 20. file_field_tag と submit_tag を横並びまたは縦並びに調整する
Sidekiq・Sidekiq-Cronの導入
Sidekiq・Sidekiq-Cronを導入して定期実行のバッチを管理する機構を作った記事を書きます!
## 概要
定期実行バッチを管理するためにsidekiq、sidekiq cronを導入
https://github.com/mperham/sidekiq
https://github.com/ondrejbartas/sidekiq-cron## Sidekiqの前提をまとめておく

RailsとSidekiqはRedis(同じエンドポイント)に対してJobをenqueue/dequeueするため、双方からアクセスする構成です。
– Active Job は Rails におけるバックグラウンドジョブを動かすための共通インタフェース
– RailsのActive Jobで提供されるのはジョブをメモリに保持するインプロセスの
Nuxt.js、Auth0でログイン画面作成
自分が参加しているネイティブアプリ開発のプロジェクトでは、webの管理画面をNuxt.jsを使い、SPAで作成しています。アプリで使っているAPIのロジックなどをそのまま使いまわせる部分も多くあり、割とスムーズに作れています。
アプリ側の認証にAuth0を使っているので、管理画面のログイン機能についてもAuth0で簡易的に作ってしまおうということで、その内容で今回記事を書きました。
ログインは基本はemailとパスワードの簡易なもので、管理者はみんなgoogleアカウントを持っているので、googleログインも一番簡易にできるようにしようと言うことでgoogleログインのみSNS認証を入れました。(チェックを入れるだけでサクッと入れることができました。)
一番簡易なやり方を記事にしているので、実際の運用している構成とは異なりますが、最低限のログイン機能はこの記事を見ればできると思います。
## Auth Moduleとは
Nuxt.jsアプリケーションに簡単に認証を追加することができる公式モジュールを使います。
https://auth.nuxtjs.org/
## mi
AmazonSNSを使ったpush通知の実装について
iOSアプリ開発で、AmazonSNSを使ってpush通知を実装したことについて書きます。
バックエンドはRailsで、フロントはSwiftです。
主に、バックエンドでpush通知を送付する機構を構築し、アプリ側ではそれを受け取ることだけをやってもらうような構成で実装したので、主にバックエンド側でのお話になります。
## push通知とは?
言葉の定義(前提)を確認しておいた方がいいので、あえて書きます。
push通知を設計していて、自分が一番よく混乱したのが、push通知とお知らせ通知の概念を混同していたことでした。基本的にpush通知はアプリのフォアグラウンドで受け取るため、push通知で来たメッセージを見た後は、その通知の内容の履歴を永続化しておくことはできません。
アプリ側のキャッシュ領域のようなところで持たせて保存しておく方法もあるようですが、アプリを再インストールすると、どっちみち消えてしまうため通知の履歴を永続化したい場合はあまり意味はないようです。
AWSにも問い合わせたのですが、AmazonSNSでは、push通知の内容を履歴として保持しておいて、例え
【selenium】session not created: This version of ChromeDriver only supports Chrome version XXX
# 1. 環境
“`Ruby:terminal
$ ruby -v
ruby 2.6.9p207 (2021-11-24 revision 67954) [x86_64-darwin19]
$ rails -v
Rails 5.2.7
“`
“`Ruby:Gemfile
gem ‘rspec-rails’, ‘~> 3.7’
gem ‘factory_bot_rails’, ‘~> 4.11’
“`
– System Specを実行するドライバとして、“`Headless Chrome“`を使うため、“`selenium_chrome_headless“`をドライバーとして設定。# 2. はまったこと
– [「現場で使える Ruby on Rails 5速習実践ガイド」](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3
railsがアプリを新規作成できないエラーを治す方法
railsがアプリを新規作成できない原因は
ホームディレクトリに直接railsアプリをすでに作成していて
その状態でフォルダを作って新規作成しても
アプリのファイルはすでにあるとして作れないためでした。
なので、この状況を治すためには
ホームディレクトリに直接作られたrailsのアプリファイルを
全て削除することです。
面倒なようですがどれがrailsファイルなのか見分けがつきやすいので
すぐにファイルを全て削除できます。全部削除し終えて新しくフォルダを作りcd で新しいフォルダに移動している状態でターミナルで rails _6.1.4.1_ new sample-appとすると無事フォルダを作成できます。
作ったフォルダをvscodeに貼り付ければ編集ができるようになります。
https://qiita.com/nakamurau1@github/items/bd86c9e8d6ad93cb4039
https://supportdoc.net/support-ror3/cannot_initialize.html
https://fukatsu.tech/create-
migrateのステータス確認
rails g migration XXX
などをタイポして、実行してしまった時にどうすれば良いのか調べました。今回は、
“`
rails g migraiton add_name_to_user name:string
“`
を
“`
rails g migraiton add_name_to_users name:string
“`のように、userをusersとしてしまいました。
### db:migrate実行前
今回は、db:migrate実行前だったので、以下のコードを実行しました。データベースへの反映段階によって対処法が異なっているようです。“`
rails db:migrate:status
“`すると、upとdownが出てきました。
“`
Status Migration ID Migration Name
————————————————–
up 20220403064432 Devise create users
down 20
[Rails]deviseのuser_signed_in?メソッドが常にfalseを返す不具合への対処法。
Railsで転職活動用のポートフォリオ作成中です。
deviseの`user_signed_in?`メソッドが正常に動作しない不具合が発生しました。## 不具合詳細
確かにログインできているのに、`user_signed_in?`が常に`false`を返す。“`bash:console
…
8: <% binding.pry %>
=> 9: <% if user_signed_in? %>
10:ユーザー詳細です。
11:
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
12: <% end %>
…
$ user_signed_in?
=> false
“`## 前提事項
・macOS Monterey v12.1
・ruby v3.0.3
・Rails v6.1.4.4
・devise 4.8.1その他
・自作のユーザー認証機能のdeviseへの
rails db:migrateの意味
マイグレーションファイルの内容をDBに反映する。
【Docker】Rails + Puma + Nginx + MySQL + React(2)
## はじめに
本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。## 【Docker】Rails + Puma + Nginx + MySQL + React(2)
### Nginx“`Dockerfile:Dockerfile
FROM nginx:1.21.6RUN rm -f /etc/nginx/conf.d/*
COPY nginx.conf /etc/nginx/conf.d/myapp.conf
ENV USER_NAME=myuser
RUN adduser ${USER_NAME} && \
chown -R ${USER_NAME} /var/cache/nginx/ && \
chown -R ${USER_NAME} /var/run/
USER ${USER_NAME}CMD /usr/sbin/nginx
vscode rails環境構築時のエラー brew doctor
# vscodeにrailsの環境構築の中で出たエラー
homebrewをインストールした後“`brew doctor“`を行った時
“`
Homebrew/homebrew-core (git ******** last commit *******)
*****@mbp ~ % brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don’t worry or file an issue; just ignore this. Thanks!Warning: Your Command Line Tools are too outdated.
Update them from Software Update in System Preferences or ru
定数だけを切り出したファイルを作り、複数クラスで使えるようにする
### やりたいこと
Rubyで定義した定数を他のクラスでも使いたいとき、クラス名::定数名のように書くと思う。ほとんどの場合は問題ないけれど、ときどき下記のような違和感や問題を感じるときがある。
– 関連が強いor内容が似てる複数のクラスで同じ定数を使いたいとき、特定のクラスにだけ定数を記載し、他のクラスではクラス名::定数名と書くことへの違和感
– クラス名が長いときなどに読みづらくなるなのでより読みやすい、使いやすい形にしたかった。
( “`config/initializers/constants.rb“`で共通の定数を設定する方法もあるが、そこまで全体的に使いたい訳でもない場合を想定 )
### どうするか
定数用のmoduleを作って、定数を使いたいクラスにそのmoduleを読み込んで使う### やりかた
1. moduleを作成し、定数を記載する
2. 使いたいクラスで読み込む#### ① moduleを作って定数を書く
HogeConstants.rbを作成し、定数を書く
“`
module HogeConstantsNEKO
rails7からrails6にダウングレードした
Gemfileのバージョン変更
“`Gemfile
– gem “rails”, “~> 7.0.2”, “>= 7.0.2.3”
+ gem ‘rails’, ‘~> 6.0.4’, ‘>= 6.0.4.7’
“`コマンド実行
“`
$ bundle update
$ rails app:update (全てYES)
“``$ rails s -b 0.0.0.0`するとエラー起きるので、以下2点修正。
Gemfileにgem ‘listen’追加
“`
group :development do
# Use console on exceptions pages [https://github.com/rails/web-console]
gem “web-console”
gem ‘listen’
end
“`config.ruからRails.application.load_server削除
“`config.ru
– Rails.application.load_server
“`マイグレーションしていきます。
“`
$
【Git】$ git remote add origin リポジトリURL を入力してfatal: remote origin already exists. とターミナルにエラーが表示された時の解決法
初めまして。プログラミングスクールに通っているso-heiです。現在2ヶ月目です。
自分の備忘録としてですが、同じエラーが出た方のお役に立てれば幸いです。
## 【問題】
“`
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git
“`
ローカルリポジトリとリモートリポジトリの紐付けするために、上記をターミナルで入力すると表題のエラーが発生する。
## 【原因】
.git/configファイルに既にremote “origin”の設定が既に存在していた
## 【解決法】
### ①remote “origin”の設定を削除
“`
$ git remote rm origin
“`上記のコマンドで入力して.git/configファイルの remote “origin”の設定を削除する
### ②もう一度試してみる
“`
$ git remote add origin git@github.com:ユーザ名/リポジトリ名.git
“`これでエラーは出なくなり、
この後にpushしましたが問題なく反映されました
いいね Ajaxにする
# Ajaxとは?
ページを更新することなくページの内容だけを入れ替えられる。
ajaxの中核を支えているのはJavacriptの技術。デメリットもあるらしいがそれを差し引いてもメリットがあると今は理解した。
何から手を出していいのかわからない。## 早速実践
### ボタン
#### my_app/app/views/favorites/_favorite.html.erb
“`html
<% if current_user.like?(micropost) %>
<%= button_to user_favorite_path(current_user, micropost), method: :delete remote: :true do %>
<%= micropost.liked.count %>
♡
<% end %>
<% else %>
<%= button_to user_favorites_path(current_user, micropost), meth
Railsでlink_to deleteが出来ない
某オンラインスクールで学習4ヶ月目、
Railsにてオリジナルwebアプリを作成していて
link_toの”削除”が実行できなくてぐるぐるしたので備忘録として。
dpテーブルに投稿したレコードを削除するため実装、削除出来ず。
“`ruby
<%= link_to "報告の削除", dp_path(@dp.id), method: :delete %>
“`
エラー画面も出ず、元の画面に戻ってきてしまう。
ログを見るとどうやらGETで動いている模様。
参考にした記事
https://qiita.com/mami3sansan/items/6a9710b3ffdc937aa5f3
https://nabelog.org/695/
https://takayuki-inoue.hatenablog.com/entry/2018/01/12/105846
その他いくつか読んでみたが、解決に至る糸口が見つからず。
上記記事等から得た知識を元に思い当たる節を探ってみたところ、
作成初期に放り込んでいた、bootstrap絡みの
cssやらjavascriptあたりに要因が
【Docker】NameError: uninitialized constant Gem::Source 解消法【Rails】
## はじめに
本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。## NameError: uninitialized constant Gem::Source 解消法
### 状況
以下の内容のDockerfileで`docker build -t <イメージ名> .`実行後、`docker run <イメージ名> rails new .`したところ以前は発生しなかった`NameError: uninitialized constant Gem::Source`が発生しました。“`Dockerfile:Dockerfile
FROM ruby:3.1.1
ENV APP_NAME=myapp
ENV USER_NAME=myuser
ENV TZ=Asia/TokyoWORKDIR /${APP_NAME}
COPY Gemfile /${APP_NAME
rails seeds.rbファイル とは
# 結論
初期データを作ってくれるファイル。
webアプリのテスト動作などに役に立つらしい。
データを一件入れる場合
“`seeds.rb
モデル名.create!(カラム名:値)
““* seeds:種
# 具体的な使用例 userモデルオブジェクトの場合
アプリを作り、実際にデータを入れて動かしたい時
データを一件入れる場合
“`seeds.rb
user.create!(name:”倉本”) #!を付けるとエラー画面が表示される。つけないとnilを返すのみ。
““データを100件入れる場合
“`seeds.rb
100.times do |n|
User.create!(
name:”test#{n+1}”
)
end
“`# まだテストデータは反映されていない
“`ターミナル.
rails db:seed
“`
これでテストデータが読み込まれます。# あ、後からテストデータを追加したい時
“`ターミナル.
rails db:migrate:reset
“`
これでテストデータが反映されます。
以上です。
dbを削除したい
# heroku上のデータベース(pstgrsql)を削除して作り直したい
“`
$ heroku run rails db:reset
rails aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your ‘production’ database.
If you are sure you want to continue, run the same command with the environment variable:.
.
.
.
“`どうやら、production環境の
whereメソッドを使ってDBから取り出すデータを絞り込む
## 実現したかった実装
送られてくるパラメーターの条件を満たしたデータをDBから取り出す実装をしたくて辿り着きました。## whereメソッドを使用する
モデル名.where(条件)とする事で条件に一致したデータを取り出せます。## 行った実装
whereメソッドに渡す引数はハッシュの形でいいことに気づき下記のようなクラスメソッドを書きました。“`ruby
def self.match_recipes(dates)
hash = {}
dates.each{|key, value|
unless value.blank?
hash[key] = value
end
}
Recipe.where(hash)
end
“`
引数に条件の形となるハッシュを渡します。
“`ruby
dates = {“category_id”=>”1”, “genre_id”=>”1”, “type_id”=>””}
recipe = Recipe.match_recipes(dates)
“`
呼び出しのイ
file_field_tag と submit_tag を横並びまたは縦並びに調整する
個人的な作業メモ。`erb`ではなく[haml](https://github.com/haml/haml-rails)を使っており、[.col-sn](https://getbootstrap.jp/docs/4.2/layout/grid/)やボタンのスタイルは、Railsの標準としてGemfileとして設定されている`Bootstrap`です。
## 横並び

“`haml
= form_tag import_items_path, multipart: true do
= file_field_tag :file, accept: “text/csv”, style: “display: inline;”
= submit_tag “一括編集”, class: “btn btn-success”
“`## 縦並び
!