- 1. [aws,rails,css]awsにデプロイした時にcssが反映されないエラーの解決例
- 2. Rails ~コメント編集ページの作成~
- 3. Rspecに関するメモ書き
- 4. Qiita風 ブログアプリ作ってみよう ver- 2
- 5. Qiita風 ブログアプリ作ってみよう ver- 1
- 6. 【Rails】フォロー機能
- 7. rails db:migrateをするとエラーが発生(rails aborted!StandardError: An error has occurred)
- 8. 就活用ポートフォリオ紹介「俺のラーメン」 〜制作日数・反省点など〜
- 9. Railsで作ったアプリをAWSでデプロイ⑥ 〜Gitクローン,Unicorn導入,credentials設定〜
- 10. ぼくがかんがえたさいきょうのRails API開発環境
- 11. 【RSpec】rack-attack gemをテスト環境では動作しないように設定する方法
- 12. Railsで作ったアプリをAWSでデプロイ⑤ 〜MySQL作成〜
- 13. Railsで作ったアプリをAWSでデプロイ④ 〜EC2インスタンスの環境構築〜
- 14. Railsで作ったアプリをAWSでデプロイ③ 〜Elastic IP,ポート開放,EC2インスタンスログイン〜
- 15. Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
- 16. scopeを使いまわしたい
- 17. 【Ruby/Rails】シンボルとキーワード引数について学んだ話
- 18. Railsのコールバックを用いてtextカラムに自動で記述を追加する方法
- 19. [aws,rails,deployのエラー解決]Errno::ENOENT: No such file or directory @ dir_s_chdirおよびSSHKit::Runner::ExecuteError: Exception while executing as ec2-user@3.115.38.38: bundle exit status: 1のエラー解決例
- 20. MPAのrailsの中にvueで部分的にSPAを作るwith Docker
[aws,rails,css]awsにデプロイした時にcssが反映されないエラーの解決例
#1.エラーの原因は?
ec2上の`etc/nginx/conf.d/rails.conf`の記述内容の参照先の誤りにより、`/var/www/アプリ名/public/asset`とすべきところを
`/var/www/アプリ名/current/public/asset`としていたためでした#2.解決方法
下記コマンドで設定箇所に飛びます
“`
[ec2-user@ip-111-11-11-11 ~]$ cd /etc/nginx/conf.d
[ec2-user@ip-111-11-11-11 conf.d]$ sudo vim rails.conf
#↑書き込みを行うのでsudoをつけてください(権限ありで開くコマンド)
“`下記のように内容を編集してください
“`
upstream app_server {
# sharedの中を参照するよう変更
server unix:/var/www/freemarket_sample_62d/shared/tmp/sockets/unicorn.sock;
}serv
Rails ~コメント編集ページの作成~
#概要
Railsによるコメント編集ページの作成、実装についてまとめる。#ユーザー編集ページの作成
###まずは見た目を作る。##controller
“`
def edit
@user=User.find_by(id:params[:id])
end
“`
コントローラでは変数@userを定義。find_byメソッドで選択したidを代入するように設定する。##routes
“`
get “user/:id/edit”=>”user#edit”
“`
左はリンク先、右は飛ぶアクション先を表す。##view
“`
アカウント編集ユーザー名
Rspecに関するメモ書き
※適宜更新
Headless Chromeを使って試験をしたい場合はこれをかく。
もちろんGemは入れないといけないのでGemfileには必要なGemが入っていることが前提。“`spec-helper.rb
/require/‘capybara/rspec’
RSpec.configure do |config|
config./before/(:each, type: :system) do
driven_by :selenium_clome_headless
end
“`Qiita風 ブログアプリ作ってみよう ver- 2
## Modelの作成
“`
$ rails g model blog
“`
“`invoke active_record
create db/migrate/20200311152022_create_blogs.rb
create app/models/blog.rb
invoke test_unit
create test/models/blog_test.rb
create test/fixtures/blogs.yml
“`上記のコマンドを実行すると 『app/models/blog.rb』が作成される。
## テーブルの作成
### マイグレーションファイルを編集する
“`rubyclass CreateBlogs < ActiveRecord::Migration[5.2] def change create_table :blogs do |t| t.string :name # 追加 t.str
Qiita風 ブログアプリ作ってみよう ver- 1
# Qiita風 ブログアプリ制作
## 環境
– ruby 2.5.1
– rails 5.2.3
– mysql2 0.5.3### terminal
“`
$ cd ~/ 保存したいdirectory
$ rails _5.2.3_ new qiita.blog -d mysql
$ cd qiita.blog
$ pwd
“`上記の写真のよう
【Rails】フォロー機能
#フォロー機能
##準備
・userテーブル
・relationshipsテーブル(usersテーブルとusersテーブルの間に入るテーブル)##relationshipsのマイグレーションファイルを編集&実行
“`
$ rails g model Relationship
“`
relationshipsモデルを作成し、マイグレーションファイルを編集&実行します。“`db/migrate/年月日時_create_relationships.rb
class CreateRelationships < ActiveRecord::Migration[5.0] def change create_table :relationships do |t| t.references :user, foreign_key: true t.references :follow, foreign_key: { to_table: :users } t.timestamps t.index [:user_id, :follorails db:migrateをするとエラーが発生(rails aborted!StandardError: An error has occurred)
# 発生したエラー内容
データベースにカラムを追加しようとすると次のメッセージが表示され処理が中断された。
「duplicate column name」とあるのでカラムが重複しているらしい。“`zsh
$ rails db:migrate
== 20200311131021 AddRememberDigestToUsers: migrating =========================
— add_column(:users, :remember_digest, :string)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:SQLite3::SQLException: duplicate column name: remember_digest
#中略
bin/rails:4:in `‘
Tasks: TOP => db:migrate
(See full trace by running task with –就活用ポートフォリオ紹介「俺のラーメン」 〜制作日数・反省点など〜
#はじめに
こんにちは!
しばた[(@shibata0406)](https://twitter.com/shibata0406)と申します!
地元の食品メーカーにて営業をやっておりましたが、現在はYouTube活動をしながら転職活動中!
興味のある方はぜひ見ていってください〜
→[YouTubeチャンネル「ポントイズ」](http://www.youtube.com/c/ポントイズPonToys)
今回は、ポートフォリオとして作成した「ラーメンサイト」をご紹介いたします。#ポートフォリオ「俺のラーメン」
ラーメン好きの(僕の)ラーメン好きによる(僕による)ラーメン好きの為の(僕のための)ラーメンサイトです。URL : htt
Railsで作ったアプリをAWSでデプロイ⑥ 〜Gitクローン,Unicorn導入,credentials設定〜
前回までMySQLを作成しました
Railsで作ったアプリをAWSでデプロイ⑤ 〜MySQL作成〜
https://qiita.com/shunsuke284052/items/a760debce93df295a05e
Railsで作ったアプリをAWSでデプロイ④ 〜EC2インスタンスの環境構築〜
https://qiita.com/shunsuke284052/items/af6957d575179bf5b11a
Railsで作ったアプリをAWSでデプロイ③ 〜Elastic IP,ポート開放,EC2インスタンスログイン〜
https://qiita.com/shunsuke284052/items/fee7caf4a2ecbb49a7c7
Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
https://qiita.com/shunsuke284052/items/6de92b0f832d6240f0bb
Railsで作ったアプリをAWSでデプロイ⑤ 〜MySQL作成〜
https://qiita.com/shunsuke284052/items/a760dぼくがかんがえたさいきょうのRails API開発環境
今やっているバイトでRails APIを作成しています。
APIを作成する際に、以下のような問題点が出てきました。1. APIのdocumentがないとフロントエンドの開発者が開発しづらい
2. documentを書くのにopenapiを採用するが、文法を覚えるのに一苦労するし、見づらいので書き忘れが生じる。
2. API responseの構造に開発者間で違いが出てしまう。
3. 実際のAPIとdocumentの挙動が違うのに修正を忘れてしまう## 結論
結論から言うと、これらの問題を解決するために以下のようにしました。
1. APIのPRを出す時にopenapiでdocumentを書く。
2. SpotlightStudioを使ってopenapiを書く。
2. responseの形はJsonAPIに従い、gemにfastjsonapiを導入する。
3. committeeというgemを使って実際の挙動とopenapiに書かれていることが違っていないか自動テストする。## Openapi(元々はSwaggerという名前)を使う
https://swagger.io/
【RSpec】rack-attack gemをテスト環境では動作しないように設定する方法
## 概要
* rack-attack gemをテスト環境では動作しないように設定した方法です。## 背景
* rack-attack gemを使ってDoS攻撃対策を設定したところ、HTTPリクエスト関連でfailするようにRSpecを解消するのに詰まったので、こちらに解消法を共有します。## 解消法
### Gemfileの設定
まずは`production` と `staging` 環境でのみ、rack-attackを導入するように修正します。“`ruby
group :production, :staging do
gem ‘rails_12factor’# DoS攻撃対策
gem ‘rack-attack’
end
“`### configの設定
次にconfigで、どの環境ではrack-attackを使用するかを設定します。“`ruby
# config/application.rb
(省略)
module Sample
class Application < Rails::Application (省略) coRailsで作ったアプリをAWSでデプロイ⑤ 〜MySQL作成〜
前回までにRuby等パッケージをインストールしました
Railsで作ったアプリをAWSでデプロイ④ 〜EC2インスタンスの環境構築〜
https://qiita.com/shunsuke284052/items/af6957d575179bf5b11a
Railsで作ったアプリをAWSでデプロイ③ 〜Elastic IP,ポート開放,EC2インスタンスログイン〜
https://qiita.com/shunsuke284052/items/fee7caf4a2ecbb49a7c7
Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
https://qiita.com/shunsuke284052/items/6de92b0f832d6240f0bb
Railsで作ったアプリをAWSでデプロイ① 〜アカウント作成編〜
https://qiita.com/shunsuke284052/items/39bf73d1996251083c72MySQLをダウンロードします
“`terminal:EC2インスタンス
sudo yum -y install mysql5Railsで作ったアプリをAWSでデプロイ④ 〜EC2インスタンスの環境構築〜
前回までにEC2インスタンスを作成しました
Railsで作ったアプリをAWSでデプロイ① 〜アカウント作成編〜
https://qiita.com/shunsuke284052/items/39bf73d1996251083c72
Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
https://qiita.com/shunsuke284052/items/6de92b0f832d6240f0bb
Railsで作ったアプリをAWSでデプロイ③ 〜Elastic IP,ポート開放,EC2インスタンスログイン〜
https://qiita.com/shunsuke284052/items/fee7caf4a2ecbb49a7c7今回は環境構築をしていきます
まずEC2インスタンスにログインしてください次に下記コマンドを実行します
“`terminal:EC2インスタンス
[ec2-user@ip-123-12-12-123 ~]$ sudo yum -y update
[ec2-user@ip-123-12-12-123 ~]$ sudo yum -y iRailsで作ったアプリをAWSでデプロイ③ 〜Elastic IP,ポート開放,EC2インスタンスログイン〜
前回までにEC2インスタンスを作りましたので続きです
Railsで作ったアプリをAWSでデプロイ① 〜アカウント作成編〜
https://qiita.com/shunsuke284052/items/39bf73d1996251083c72
Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
https://qiita.com/shunsuke284052/items/6de92b0f832d6240f0bb作ったEC2インスタンスにElastic IPを振り分けます
こうしないとEC2インスタンス作成時から振り分けられたパブリックIPはサーバー再起動の度に変化してしまいます
AWSから振り分けられた固定のパブリックIPアドレスであるElastic IPを振り分けます左サイドバーの「Elastic IP」→「Elastic IP アドレスの割り当て」→「Amazon の IPv4 アドレスプール」→「割り当て」でカンタンに作成できます
Railsで作ったアプリをAWSでデプロイ② 〜EC2インスタンス〜
前回の続きです
Railsで作ったアプリをAWSでデプロイ① 〜アカウント作成編〜
https://qiita.com/shunsuke284052/items/39bf73d1996251083c72今回はEC2インスタンスを作っていきます
EC2インスタンスとはAmazonが提供しているLinuxが組み込まれた「仮想マシン」ですまずはアカウント作りたてなのでリージョンを設定します
ログイン画面の右上です
Amazonの最寄りのサーバを選びます次にEC2インスタンスを作成します
同画面左上「サービス」→「検索バーでEC2と検索」→「左サイドバーからインスタンスを選択」でこの画面になるので、
「インスタンスを作成」をクリック
scopeを使いまわしたい
# scopeを使いまわしたい
複数のモデルに対して同じスコープを使いたい…しかし一々コピペして同じスコープを定義するのは嫌だったので調べてみたところ、スコープ用のモジュールを切り出すのが良いらしい
## 実現したいこと
“`ruby:こんな動きがしたい.rb
scope :recent, -> { order(created_at: :desc) }
“`こんなスコープを複数のモデルで使いまわしたい
## 結論
“`ruby:app/models/concerns/common_scope.rb
module CommonScope
extend ActiveSupport::Concern
included do
scope :recent, -> { order(created_at: :desc) }
end
end
“`
このモジュールをモデル側でincludeしてやると使えるようになる`ActiveSupport::Concern`をextendし、includedブロック内に記述することでscopeをクラスメソッドとして使え
【Ruby/Rails】シンボルとキーワード引数について学んだ話
プログラミング歴1年目でキーワード引数という言葉を知り、
いろいろ学べたのでまとめてみました!(ついでにシンボルについても!)駄文ですが読んでいただけると嬉しいです~?
## シンボルについて
### シンボルとは?
めっちゃざっくり言うと『文字列のような見た目をした数値』。
コード上は文字列で見えてるけど、Rubyの内部では数値として扱われるオブジェクト。シンボルの実態は数値なので、処理速度が文字列よりも早い。
### メモメモ
クラス名・メソッド名・変数名・定数名を定義したときに実は勝手にシンボルも生成されている。“`ruby:例
# シンボルの確認方法
class Hoge # クラスの定義
endnum = 5 # 変数の定義
p Symbol.all_symbols # 定義済みの全てのシンボルオブジェクトの配列を返す
#=> [:!, :”\””, :”#”, :”$”, :%, :&, :”‘”,… :Hoge, :num,…]
# すでに定義されているシンボルのあるので、めっちゃいっぱいでてくる
“`[シンボルについてのおすすめ
Railsのコールバックを用いてtextカラムに自動で記述を追加する方法
もし、ツイートの最後に定型文などをつけたい場合ってどうすればいいんだろう。
今日はそんなことを書きます^^# コールバックとは
・オブジェクトの生成・更新・削除のタイミングで呼び出されるメソッド
・イベント(create, save,destroy)をトリガーとして登録可能
・トリガに対してメソッドを共通化できて便利情報を変更や削除した時に呼び出せつメソッドですね。
# before_createで最後に!!を足してみる
では、before_createを使ったコードを書いていく。
“`
before_create :change_tweetdef change_tweet
self.text = text + “!”
endend
“`## 処理の流れ
before_createが作動
↓
change_tweetメソッドが呼び出される。
↓
change_tweetメソッドの中に定義してあるself.textの処理
↓
self.textの中には、text + “!”という処理が代入されている
↓
textとは、Twe[aws,rails,deployのエラー解決]Errno::ENOENT: No such file or directory @ dir_s_chdirおよびSSHKit::Runner::ExecuteError: Exception while executing as ec2-user@3.115.38.38: bundle exit status: 1のエラー解決例
#1.エラーの様子
題名のエラーは下記のように吐かれたものでした
“`
Traceback (most recent call last):
1: from /Users/kontatomoya/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute’
/Users/kontatomoya/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute’: Exception while executing as ec2-user@3.115.38.38: bundle exit status: 1 (SSHKit::Runner::ExecuteError)
bMPAのrailsの中にvueで部分的にSPAを作るwith Docker
# なぜそんなことをしたのか
その昔、業務委託でジョインした副業先の既存プロダクトにメッセージ機能の新規機能追加の担当して
当時本業でvueをよく触っていたため# 技術選定で結構迷った
当時、本業の方は完全なSPAだったのでrailsから分離させてvuecliで開発していたが
副業先はMPAだったため## WebpackでやるかWebpackerでやるか
答え: Webpacker理由: 既存のslimのテンプレートエンジンのlayoutを流用するため あと、なんだかんだWebpackerにしてよかった気がする
# やっていく
※mysqlなど入れず最小構成でやります
※dockerの設定やrails、vueの文法や扱いなどはある程度わかっている前提として、細かい解説は省略します# 1. vue入りのrailsプロジェクトを作る
## 適当なディレクトリを作りDockerで準備していく“`dockerfile:Dockerfile
FROM ruby:2.6.1ENV LANG C.UTF-8
ENV TZ=Asia/TokyoWORKDIR /usr/
関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた