- 1. 前提条件
- 1.1. Rails I18n(国際化)のymlファイル内からの取り出しについて
- 1.2. 【初学者】RailsをECS(Fargate)にNginxを使用せずにデプロイしようとした際に、ブラウザで「このサイトにアクセスできません」と出力されてしまった際の暫定対処
- 1.3. DockerでRails環境(Nginx+Unicorn+MySQL)を構築してFargateへデプロイするまで〜開発環境編〜
- 1.4. ユーザーの好みに合わせて服をおすすめするアプリを作成しました
- 1.5. 【解決済】Rspec WrongScopeErrorが発生
- 1.6. 【Rails】Rails実装開始の前にMVCを学ぼう【基本中の基本】
- 1.7. Webpacker::Manifest::MissingEntryErrorの解決
- 1.8. [Rails] モデル名.newってなんぞや[初心者向け]
- 1.9. CircleCI Herokuへのデプロイ時に’No images to push’エラーが出る場合の解決方法
- 1.10. 【Rails】コンソール内でmigrateする方法
- 1.11. 【Rails】ActiveStorageはdependent: :destroyをつけなくてもよい
- 1.12. ActionController::InvalidAuthenticityTokenの対処方法
- 1.13. 【RSpec】データ作成で使える小技
- 1.14. RSpec(Ruby on Railsのテストコードを書くために用いられるGem)の導入
- 1.15. link_toでViewからControllerに値を渡す
- 1.16. ユーザー管理機能(devise)の導入
HTMLの基礎知識(コメント機能で動画を投稿)
みなさんこんにちは!!
今回はYouTude投稿とコメント機能の応用した機能になります!!**STEP1:モデルを作成しよう!**
“`ruby:ターミナル
rails g model Youtubecomment content:string user:references register:references
rails generate migration AddYoutubeUrlToRegisters youtube_url:string
rails db:migrate
“`**Step4: helperにメソッドの定義**
“`ruby:helpers/registersHelper
module RegistersHelper
def find_youtube_url(youtube_url)
if youtube_url[0..16] == “https://youtu.be/”
return youtube_url[17..27]
# “https://youtu.be/WGiUk8VakxQ” 11桁の
成果物を作る為の計画
## 成果物を作る為の下準備
### 自問自答
– Q, どの様な成果物を作りたいのか?
A, 自分の経歴や自己紹介、現状のスキルなどを
テキストや動画を使って説明出来るアプリの作成したい– Q, どの様な言語で?なぜその言語なのか?
A, 言語はRubyでフレームワークはRubyと相性の良いRuby on Railsを
使おうと思います.プログラミングスクールの課題でRubyを扱っていて
多少の知識はあるのでRubyをある程度マスターしてから他の言語も学習
していきたいと思っています。
– Q, なぜRubyで成果物を作る必要があるのか?A, プログラミングスクールではRubyの基礎の知識とどの様に進めていけば
作りたいものが作れるかのプロセスを学んだので今回は自分で全て考えてタスクを
言語化+細分化し作成することでRubyの言語を理解出来ている事を証明し転職活動時
のポートフォリオとして使いたい– Q,どの様な順序で進めていけば効率良く作業できるか?
【解決済】rails sが起動しなくなった
`rails s`が動かない現象に遭遇したので、備忘録として投稿します。
## 発生した問題
下記エラーにより、`rails s`が起動しなくなった。
“`
% rails s
=> Booting Puma
=> Rails 6.1.5 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
bin/rails:7: warning: already initialized constant APP_PATH
/Users/xxxx/workspace/app/bin/rails:7: warning: previous definition of APP_PATH was here
The most common rails commands are:
generate Generate new code (short-cut alias: “g”)
console Start the Rails conso
[rails初心者]複数権限でのログインを使ったレビューサイトの作成(基本)
初めに
ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)
※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス前提条件
①ER図に載っているモデル(※レビューモデルは無くても大丈夫です→準備段階で作ります)が作成されていること
②ログイン機能が実装済み(複数権限でのログイン機能を実装済みの体で進めます)
③jQuery & Raty導入済み
④Bootstrap導入済み
⑤今回の記事では基本機能のみ※管理者機能や平均値算出などは次回の記事にて紹介いたします
Rails I18n(国際化)のymlファイル内からの取り出しについて
## Rails I18n について理解したことをまとめます。
### 今回行いたかったこと
– I18nを利用して、Railsのviewファイル内の翻訳## I18n導入について
– まず、I18nを導入する際に、config/application.rb内に以下のコードを追加します。“`
config.i18n.load_path += Dir[Rails.root.join(‘config/locales/**/*.{rb,yml}’)]
config.i18n.default_locale = :ja
“`## ymlファイルの作成
– 次にconfig/locales内に、ja.ymlファイルを作成します。
– 自分の場合は、view用にja.ymlを分割したかったので、config/locales/view/モデル名/ja.ymlとしました。
– 作成が完了しましたら、ja.yml内に翻訳したい言葉と翻訳後の言葉を記載していきます。“`
ja:
defaults:
Tasks Index: ‘タスク一覧’
New Task: ‘タス
【初学者】RailsをECS(Fargate)にNginxを使用せずにデプロイしようとした際に、ブラウザで「このサイトにアクセスできません」と出力されてしまった際の暫定対処
初学者のため誤り等あるかもしれませんが、本事像で丸3日ほど苦労し参考となる記事がなかったため、雑な記載になりますが備忘もかねて投稿させていただきます。
記載の内容で一旦解決しましたが、今後学習を進める中で根本原因や対処が誤っていた場合は修正するようにいたします。
特殊なケースかもしれませんが、どなたかのお役に立てば嬉しいです。# 事象の概要
・Railsで作成したAPIをECS(Fargate)にNginxを使用せずにデプロイしたところ、
CloudWatch上ではRailsサーバが問題なく立ち上がっているにもかかわらず、
ブラウザでECSタスクのPublicIPに接続すると「このサイトにアクセスできません」と出力される。
## 詳細の状況
・インフラ構成は以下の通り
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710784/fc3d50f3-308d-0109-5eae-4988f45544c7.png)・RailsはDockerfileで3000番ポートで立ち上げ。
`
DockerでRails環境(Nginx+Unicorn+MySQL)を構築してFargateへデプロイするまで〜開発環境編〜
# 概要
RailsアプリをECS Fargateにデプロイしようとしたところ、思っていた以上に苦労したので、自分のアウトプット&備忘録を兼ねて執筆しました。ECSのイメージとして、「開発環境で作成したイメージをそのままデプロイすればOK☆\(^o^)/」だったのですが、そう簡単にはいきませんでした。今回は開発環境編としており、本番環境編も現在執筆中です。# 環境
– M1mac
– Visual Studio Code
– Docker(20.10.17)# 構成
今回、**Dockerfileを開発環境と本番環境で分けるか否か**でとても悩みました。環境毎で動きが異なる部分があるため、分けた方が正直楽でした。しかし同時に「環境差分も生まれてしまう」こと、「DRYの原則に乗っ取っていない」ことから、Dockerfileは環境統一を図っています。実務ではどうなのでしょうか。。
“`
.(各Railsファイル)
├── config
| └── datebase.yml
| └── unicorn.rb
├── nginx
| ├── Dockerfile
|
ユーザーの好みに合わせて服をおすすめするアプリを作成しました
未経験からのWeb系エンジニア転職を目指し、ポートフォリオサイトをRuby on Railsで作成しました。
## アプリケーション
アプリケーション:[「PICK OUT」](https://warm-stream-98443.herokuapp.com/)
※Herokuで動かしているので最初のページの表示に時間がかかる場合があります
ソースコード:https://github.com/bellmmm/original_rails_app## アプリケーション概要
アカウントを作成したユーザーに対し、テストを通してユーザーの服の好みを判断し、ユーザーの好みに合わせて洋服をおすすめするアプリケーションです。## 目的
自分の好きな服、似合う服をはっきりと認識している人は少ないと思います。私もECサイトで服を購入したり店舗で試着をしてみて、しっくりこないと感じたことが多くあります。そこで、人はそれぞれ好まない要素が無意識にあると仮定しました。このWebアプリでは、ユーザーがしっくりこない服をいくつか選ぶことで好まない要素を想定し、それを持たない服をおすすめ商品と
【解決済】Rspec WrongScopeErrorが発生
Rspecでテストを走らせた際に発生した問題について、備忘録として投稿します。
## 発生した問題
“`ruby:ターミナル
Failure/Error:
raise WrongScopeError,
“`#{name}` is not available from within an example (e.g. an ” \
“`it` block) or from constructs that run in the scope of an ” \
“example (e.g. `before`, `let`, etc). It is only available ” \
“on an example group (e.g. a `describe` or `context` block).”`name` is not available from within an example (e.g. an `it` block) or from
【Rails】Rails実装開始の前にMVCを学ぼう【基本中の基本】
はじめに
Railsの実装にあたり欠かせないMVCの概念の理解。
MVCとは単純に『Model,View,Controller』のことです。
最初はいやだからそれがなんなのよって感じなのですが。
しかしこれが理解できないとうまく実装できないため、
自分なりに噛み砕いてわかりやすく説明していきたいと思います。MVCをわかりやすく例えてみたい①
まずはMVCと調べるとよく目にするこの画像。
> https://www.javadrive.jp/rails/ini/index7.html
(参照サイト)見るとわかるようなわからないような…という感じでした。最初は。
これはブラウザー(つまり今自分が触っているPC画面)から手に入れたい情報(Webサイト
Webpacker::Manifest::MissingEntryErrorの解決
# 前提
“`
$ rails -v
Rails 6.0.3
$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin21]
“`# 起きたこと1
Webpacker::Manifest::MissingEntryError“`
$ bin/rails s
<略>
ActionView::Template::Error (Webpacker can’t find application in /Users/kosuke/works/rails-demo/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has
[Rails] モデル名.newってなんぞや[初心者向け]
# 目次
[1.はじめに](#はじめに)
[2.目的](#目的)
[3.モデル名.newとは](#モデル名newとは)
[4.モデル名.saveをすると](#モデル名saveをすると)
[5.まとめ](#まとめ)# はじめに
りくがめと申します。理解力アップのため記事を書くことにしました。
記事を書くのは初めてなので、温かい目でみていただければ幸いです。
では、よろしくお願いします!# 目的
**モデル名.new**、**モデル名.save**ってなんぞや
**空のインスタンス**ってなんぞや
ということを説明します。
使い方の説明ではないので、使い方を知りたい方はほかの記事を探してください。# モデル名.newとは
モデル名.newの説明の前に**モデル**の説明をしておく必要があります。
モデルとは**データベースとやり取りをするところ**です![qiita.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2916411/5f68ae7e-a084-78b3-4c3e-6989e67c
CircleCI Herokuへのデプロイ時に’No images to push’エラーが出る場合の解決方法
# 概要
CircleCIでHerokuへのデプロイを実行した際、イメージが見つからないというエラーが発生した。
解決方法についてメモ。
“`bash:エラー内容抜粋
#!/bin/bash -eo pipefail
heroku container:push web -a $HEROKU_APP_NAME
▸ No images to pushExited with code exit status 1
CircleCI received exit code 1
“`
# 環境
ruby 3.0.2
rails 6.1.4
rspec-rails 5.1.2
CircleCI 2.1# 先に結論
デプロイ対象ディレクトリにDockerfileが含まれるようにする。“`yml:.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.4.0
browser-tools: circleci/browser-tools@1.4.0
heroku: circleci/heroku@1.2
【Rails】コンソール内でmigrateする方法
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## コンソール内でmigrateする方法
コンソールでUserを作成しようとした際にエラーでできず、最終的にコンソール内でmigrateするのに時間がかかったので備忘録にする。“`
> User.create(name: “山田次郎”)
=> ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation “users” does not exist)> User
=> User(Table doesn’t exist)> rails db:migrate
=> NameError (undefined local variable or method `migrate’ for main:Object)
“`“`
> class CreateUsers < ActiveRecord::Migration[6.0] > def change
> create_table :user d
【Rails】ActiveStorageはdependent: :destroyをつけなくてもよい
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## has_one_attachedにオプションは不要
“`app/models/user.rb
has_one_attached :avatar
“`> If the :dependent option isn’t set, the attachment will be purged (i.e. destroyed) whenever the record is destroyed.
“`ruby
has_one_attached :avatar, dependent: :destroy
“`
のようにオプションつけなくても、親モデルが削除されたら付随するavatarも削除してくれる!https://api.rubyonrails.org/v6.0/classes/ActiveStorage/Attached/Model.html#method-i-has_one_attached
ActionController::InvalidAuthenticityTokenの対処方法
# 環境
Rails 6.1.6.1
ruby 2.6.8
OS WSL2(Ubuntu 20.04.2 LTS)# APIを使用したPOSTの際にエラーが起こる
### エラー文
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294147/973e9c1f-9077-c629-0d11-0082f8e4334c.png)“`
ActionController::InvalidAuthenticityToken in Users::XXXXController#create
ActionController::InvalidAuthenticityToken
“`## 原因
CSRF対策のトークンが無いことが原因のようです。
※CSRF:クロスサイトリクエストフォージェリ## 対処方法
protect_from_forgeryをcontrollerに追記することで解決
“`
class Users::XXXXController < ApplicationCont
【RSpec】データ作成で使える小技
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## テストデータの作成で使える小技
### before
“`ruby
let(:cancel_applicatoions) { create_list(:cancel_applicatoion, 30) }
cancel_applicatoions.each do |cancel_applicatoion|
create(:cancel_applicatoion_status, cancel_application: cancel_applicatoion)
end
“`### after
“`create_list“`で作成したデータをeachのようにループできる。
“`ruby
create_list(:cancel_applicatoion, 30) do |cancel_applicatoion|
create(:cancel_applicatoion_status, cancel_application: cancel_applicatoion)
en
RSpec(Ruby on Railsのテストコードを書くために用いられるGem)の導入
# はじめに
RSpec導入の流れを忘れないために記録に残す。# RSpec導入の流れ
## 1.Gemの導入
# Gemfile内
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
gem ‘rspec-rails’, ‘~> 4.0.0’ ⇦この行を追記
end% bundle install
## 2.RSpecの設定
% rails g rspec:install<ターミナルで以下が表示されれば問題ない>
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helpe
link_toでViewからControllerに値を渡す
## 環境
– Rails5.2
– Slim
– Bootstrap## はじめに
ViewからControllerに値(パラメータ)を渡す場合、Viewに配置したsubmitのボタンを押して、画面に入力した値をControllerにPOSTする方法以外に、link_toを使って、GETでControllerに渡す方法があります。link_toを使って、値(パラメータ)をControllerに渡す方法について、色々とやってみました。## 内容
seikyusクラスにsyori1という名前のメソッドを作ります。そして、ルート情報を次のように作ります。link_toで値を渡すときは、POSTではなくGETで渡します。
“`routes.rb
resources :seikyus do
get :syori1, on: :collection
end
“`「テスト」という値を、ViewからControllerに渡すには次のように記述します。
“`index.html.slim
– test = “テスト”
= link_to “テスト1”, syori
ユーザー管理機能(devise)の導入
# はじめに
deviseを用いたユーザー登録機能の実装順序を忘れないように記録に残す。# devise導入の流れ
## 1.deviseの導入
下記コードの追記と、コマンドの実行1.gemfileに追記
gem ‘devise’
2.gemインストールのコマンド実行
% bundle install## 2.deviseの設定に関するファイルの導入
% rails g devise:install#以下のようなlogが出れば成功
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================Depending on your application’s configuration some manual setu