- 0.1. Fly.ioでデプロイする手順(Window)
- 0.2. Render.comでRailsアプリの本番環境を作成する方法をどこよりも優しく伝える!
- 0.3. 【解決済】CORS設定でOPTIONSリクエストとヘッダが取得できない
- 0.4. 今まで知らなかった開発で使用するメソッドをまとめてみた!
- 0.5. 【備忘録】【Rails】before_actionとは
- 0.6. Deviseのエラーメッセージを日本語化する
- 0.7. ビューテンプレートについて
- 0.8. インデントを減らすコマンド
- 0.9. 【Rails】ルーティング【備忘録】
- 0.10. HTMLの基礎知識(コメント機能で動画を投稿)
- 0.11. 成果物を作る為の計画
- 0.12. 【解決済】rails sが起動しなくなった
- 0.13. [rails初心者]複数権限でのログインを使ったレビューサイトの作成(基本)
- 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の解決
Fly.ioでデプロイする手順(Window)
# STEP1:Gitを利用できるようにしよう
Gitを利用するためにユーザー名とemailを登録する必要があります。
以下のコマンドの”名前”と”メールアドレス”の部分を変更して、実行してください!
名前は自分の氏名のローマ字で大丈夫です。“`ruby:ターミナル
git config –global user.name “名前”
“`“`ruby:ターミナル
git config –global user.email “メールアドレス”
“`# STEP2:リリースするための準備を仕込もう
“`ruby:ターミナル
cd desktop
cd (自分のアプリのフォルダ名)
“`
## Gemfileの編集
まず、「gem ‘sqlite3’, ‘~> 1.4’」と書いてある行(9行目付近にあります)を
コメントアウトしましょう。
(これらは、自分のパソコンの中のrails app内で用いるデータベースのgemです。)#変更前
![8-2-1.png](https://qiita-image-store.s3.ap-northeast-1.
Render.comでRailsアプリの本番環境を作成する方法をどこよりも優しく伝える!
# 目的
Herokuの有料化により他のPaasを探している方もいるのではないでしょうか?
本記事は [Render.com](https://render.com/) というサービスを本番環境に使用する方向けの記事です。前記事からの続編となっていますので、
+ 本番環境だけPostgreSQLにする
+ Railsアプリの環境変数を設定するという方法を知りたい方は下の記事を御覧ください。
https://qiita.com/ysk91_engineer/items/904a5bc881eda8a10df8
:::note
現在Webエンジニアを目指して勉強中の、現場未経験の僕でもできた工程です。
ハンズオンでゆっくりやっていきましょう。
:::# 準備
## scaffoldでささっとUserモデルを作る
本番環境でdbが動いているかを確認するために、簡単なMVC構造を作成しましょう。
ターミナルにて“`terminal
$ rails g scaffold User name:string
$ rails db:migrate
“`
を実行し、Userモ
【解決済】CORS設定でOPTIONSリクエストとヘッダが取得できない
実装中に対応した内容を備忘録として投稿します。
## 発生した問題
フロントエンド(Nuxt.js)から、バックエンド(Rails)に対して、APIリクエストを投げるとCORSエラーが発生。“`
Access to XMLHttpRequest at ‘http://localhost:3000/users/1’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`## 原因
– ブラウザ側のセキュリティが強化されていて、意図しない挙動を防ぐために実装されている。
– もし仮に、ハッキングされるなどすると、
– フロントエンドとバックエンドでサーバーやドメインが別れている場合に、悪意のあるドメインにすり替えるなどができてしまう。
– 会員制サイトでログインするときに、ログインIDやパスワードを盗むことができてしまう
今まで知らなかった開発で使用するメソッドをまとめてみた!
## なぜ記事を書こうと思ったか
Railsアプリの開発をする際に適切なメソッドを調べる時がある為、今まで知らなかった開発で使用するメソッドを中心にこの記事にまとめようと思います。## railsメソッド一覧
### Regexpクラス– escapeメソッド
メタ文字をエスケープした結果を返す。“`
pattern = Regexp.escape(‘1+2=3,2*3=6’)
p pattern
# ‘1//+2=3,2//*3=6’
“`### Stringクラス
– subメソッド
文字列中で pattern にマッチした最初の部分を文字列 replace で置き換えた文字列を生成して返す。“`
greeting = “I am name. My favorite food is meet.”
pattern = { “name” => “James”, “meet” => “beef” }
replaced = article.sub(/name|meet/, pattern)p replaced # “I am James. M
【備忘録】【Rails】before_actionとは
11月からRailsを実務で使うことが決まったので、これから学習したことを備忘録に残していきます。
今日は【before_action】について。
▼ 参考にさせていただいた記事
[pikawaka 【Rails】 before_actionの使い方とオプションについて](https://pikawaka.com/rails/before_action)# before_actionとは
コントローラの各アクションが実行される前に、何らかの処理を行いたい時に使用するもの。
フィルタの一つ。フィルタとは、コントローラにあるアクションの直前や直後、または直前と直後の両方に実行されるメソッドのことをいい、Railsには様々なフィルタが用意されている。“`rails:before_actionの使用例
class UsersController < ApplicationController before_action :メソッド名 end ``` これをコントローラーファイルの上部に記述しておくことで、コントローラーのアクションが動く前にメソッドが実行されて、そのあとでア
Deviseのエラーメッセージを日本語化する
# Devise日本語化の設定
application.rbを編集して、言語設定を変更する下記の様にconfig/application.rbの中に**config.i18n.default_locale = :ja**を追記する。
“`ruby:config/application.rb
module ——-
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 # 日本語の言語設定 config.i18n.default_locale = :ja # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files
ビューテンプレートについて
### パスとURLヘルパーメソッド
ルーティングを表示する際のPrefixの値+_pathなどとするとルーティングで定義したパスが取得可能になります。以下例になります。
次のようなルーティングを表示した場合のprefix欄にあたる
**publisher**や**edit_profile**の名前を使ってURLやパスを生成できます。
“`
Prefix Verd URI Pattern Controller#Actionpublisher GET /publishers/:id(.:format) publisher#show
edit_profile GET /profile/edit(.:format) profiles#edit
“`上記のPrefix値に_pathを付けると
ドメインやポートなどを除いた/から始まるパス部分を、
_urlとするとドメインなどを含んだ安全なURLを返します。また、publsiherのようなパスの情報に「:id」といった変動
インデントを減らすコマンド
# はじめに
余計につけてしまったインデントを減らす方法を記録します。## 対処法
shift + tab キーでインデントを減らすことができます。
【Rails】ルーティング【備忘録】
下記のようにlogout_pathのような[ルート名]_pathのように記述し、routes.rbにルートを記述するとlogout.hrml.erbを呼び出すことができる。
ルート名の確認方法は下記のコマンドrails routesで確認できる。
ルート名は,as:’ルート名’でエイリアスを設定できるが、デフォルトでは[コントローラ名]\_[アクション名]_pathのようになる。
“`bash
$rails routes | grep ‘home’
#ルート名 URL コントローラ名#アクション名
root GET / home#top
home_top GET /home/top(.:format) home#top
logout GET /home/logout(.:format) home#logout
“`
“`routes.rb
Rails.application.routes.dra
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