- 1. Unicornが立ち上がらない(EC2・Unicorn・Nginx・Rails)
- 2. Ruby on Railsで簡単なアプリを作成
- 3. テストコードの環境設定をわかりやすく解説
- 4. rails font-awesome導入
- 5. rails gemインストールの環境指定
- 6. 何とかしてRailsで有効な日付か判定する
- 7. RailsでSchema migrations table does not exist yet.が出た。
- 8. Rails + Turbolinks上のjs内でletを使うと怒られる
- 9. 非同期処理に便利なremote: tureオプションを利用する
- 10. 【初学者向け】config/deploy.rb に環境変数を仕込む方法
- 11. rspec + FactoryBot で Class名を省略して create や build を直接書く設定 ( #Rails )
- 12. [メモ]2019/11/19 Ruby SNS投稿保存 基礎
- 13. AWS Cloud9 で rails server して、Ctrl+C せずにターミナルを閉じた場合
- 14. Rspecでdrag&dropをテストする
- 15. Ruby on Rails チュートリアル第11章 アカウントの有効化
- 16. 【Rails】RuboCopの基本的な使用方法と出力の見方
- 17. Railsでポートフォリオを作ってみよう! vol.4 (RSpec・FactoryBot編 後編)
- 18. erbで、複数行コメントアウト
- 19. 【AWS EC2】`find_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
- 20. Railsチュートリアル学習 備忘
Unicornが立ち上がらない(EC2・Unicorn・Nginx・Rails)
#はじめに
ポートフォリをを作成して本番環境にあげようと
EC2(Linux2)、Nginx、Unicornを使い環境構築指定て
色々詰まったので書き留めておきます#前提
– EC2の構築が終わってログインできている
– Nginxインストールと設定完了
– Unicornインストールと設定完了
– Nginxは立ち上がるようだけど、Unicornが立ち上がらず“`master failed to start, check stderr log for details“`と言われるちなみにパグリックIDにアクセスした時は
502 Bad Gateway
と表示されていました#エラー調査方法
ログを確認しようと思い
“`sudo tail log/unicorn.log“`
を使っていましたが、ログだけではよく分からない。。。
と思っていましたが、インフラエンジニアの先輩に
“`sudo tail -f /var/www/rails/アプリ名/log/unicorn.log“`
を別画面で流してみてと言われ、unicorn起動をしながら別ウィ
Ruby on Railsで簡単なアプリを作成
##はじめに
以下の記事を参考に、手を動かしながら簡単なTODOアプリを作成する過程を記録していきます。
[Ruby on Railsで簡単なToDoアプリを作ってみる – Reasonable Code](https://reasonable-code.com/rails-todo/)
##基盤の作成
###プロジェクトを作成する
“`
$ rails new todo-app
“`
なぜか勝手にgitでの管理が始まりました。まあ別に不都合はないので、コミットしておきます。“`
$ git add .
$ git commit
“`###サーバーを起動する
“`
$ rails s
“`###Modelを作成する
RailsではModelを使ってデータベースとやりとりします。基本的にSQL文は書きません。
Model名は頭文字が大文字で、常に単数形です。
デフォルトで「id、created_at、updated_at」の3つのカラムが作られ、ここではさらにstring型のtitleというカラムを追加します。“`
$ rails g model Task
テストコードの環境設定をわかりやすく解説
プログラムを意図した通りに動くことを確かめるために、テストコードを使います。
**プロダクションコード : 本番環境で実際に作動するプログラム**
**テストコード : テストを行うために行うプログラム**
このテストコードの方を一緒に勉強していきましょう!
#概要
・用意するgem
・Rspecを用意する
・Rspecが正しく設定されているか確認する##用意するgem
**Railsでは、Rspecという言語を使用します。**
**そして、rspec-railsというgemを使用します。**
web_consoleをいうgemは、テスト環境で動かすと不具合が起きるgemなので、
developmentの環境下に移動しましょう!Railsで開発したアプリにgemをインストールします。
“`Gemfile.
group :development, :test do
gem ‘rspec-rails’
endgroup :development do
gem ‘web-console’
end
“`
bundle installを実行!####テスト
rails font-awesome導入
今回はrailsでアイコンことfont-awesomeの導入について説明します。
ツイッター、facebokkといったアイコンをしようしたい場合このgemで導入できます。
今回はhamlとsassの導入した形でやってみます。# gemfile
“`ruby:gemfile
em “font-awesome-sass”
“`
書いた後忘れずターミナルでbundle installします。# sass
“`sass:applicaiton.sass
@import “font-awesome-sprockets”;
@import “font-awesome”;
“`# haml
gemを用いることでfontawsomeアイコンをヘルパーメソッドで導入することができます。
アイコンの名称等はfontawesomeの公式Webページから確認することができます。“`haml:haml
= link_to “https://www.facebook.com/”, class: “contents__btn” do
= icon(‘fab’, ‘f
rails gemインストールの環境指定
gemの導入について
範囲を変える方法があるので備忘録として書きます。# 全ての環境で
“`ruby:gemfile
# いずれの環境でも必要
gem ‘devise’
“`# 開発環境のみ
“`ruby:gemfile
# 開発環境にのみ必要
group :development do
gem ‘rspec’
end
“`
# テスト環境のみ“`ruby:gemfile
# テスト環境にのみ必要
group :test do
gem ‘rspec’
end
“`# 本番環境のみ
“`ruby:gemfile
# 本番環境にのみ必要
group :production do
gem ‘unicorn’
end
“`
何とかしてRailsで有効な日付か判定する
# 多分、悪手。
ほんとはバリデーションで弾いたりすべきなんでしょうね。・フォームから0~8桁の数字が送られてくる
・誕生日として登録したい、 **1940-12-23** という形式で。“`ruby
begin
if params[“user”][“birthday”].to_date
end
rescueelse
unless params[“user”][“birthday”].to_date == nil
正当な日付の場合の処理
end
end
“`# 内容について
無効な日付(未入力含む)なら.to_dateしてもdate型に出来ないので
例外に入り、先に進まない。
それに該当しなければ、例外処理の中のelseに入り処理が実行される。# いい書き方したい
せっかくRoRを使ってるんだから、
正しい使い方をしたいですねえ。
自分で見て改めて無茶苦茶だなあと思ったので、
まともな書き方を勉強しようと思います。。。
RailsでSchema migrations table does not exist yet.が出た。
##問題
railsで既にあるモデルにカラムを追加し、`rails db:migrate`したところ“`
$ rails db:migrate
== 20191119102845 AddImageToUsers: migrating ==================================
— add_column(:users, :image, :string)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
“`
そして確認したところテーブルが存在しないというエラー。“`
$ rails db:migrate:status
Schema migrations table does not exist yet.
“`##試したこと
ググって試したのは
`rails db:rollback`,
`bundle exec rake db:drop`,
`rails db:create`
などごちゃごちゃやっても効果なし
Rails + Turbolinks上のjs内でletを使うと怒られる
## turbolinks × let の相性?
かなり時間を取られたのでメモ。
##
“`html:index.html.erb
“`
このようにerbのscriptタグ内にletで変数宣言をすると、turbolinksでの一度訪れたページへの遷移の際
Chromeでは`Uncaught SyntaxError: Identifier ‘a’ has already been declared`のように怒られてしまいます。どうやらletで宣言した変数はページ遷移しても保持されたままのようで、再度同じ名前の変数を宣言しようとするために起こるようです。
varを使えば問題なく動作します。“`html:index.html.erb
“`
なぜこうなるのか、ご存知の方はコメントお待ちしております。
非同期処理に便利なremote: tureオプションを利用する
####remote: tureの概要
・非同期処理を行ないたいに使う
・link_to もしくは button_to で利用可能。
・button_toで可能ということは、submitでも可能?—
Railsには、Ajax機能が組み込まれている
remote: ture オプションで非同期処理が可能。リクエストが、HTML形式ではなくjs形式なる(ページ遷移をしなくなる)
参考URL:https://qiita.com/__tambo__/items/45211df065e0c037d032####メリット
Railsが自動的にAjaxでサーバにリクエストを送信してくれるため、AjaxのJavascriptコードを自分で書く必要がない
####使い方
ex.)link_to の場合
<%= link_to post_favorite_path(@post),method: :delete do, remote: true %>
こんな感じだけど動作しない・・・ぐぬぬぬぬぬぬぬぬぬ
【初学者向け】config/deploy.rb に環境変数を仕込む方法
Capistrano + unicorn を用いた自動デプロイで好きな環境変数を
デプロイ先のサーバーにも、githubにも記載なしで送り込む方法です。
basic認証のアカウント名とパスワード設定など、環境変数を使う際にご活用ください。“`config/deploy.rb
set :default_env, {
(デプロイ先での環境変数名): ENV[“デプロイ元の端末の環境変数名”],
例:
BASIC_AUTH_PASSWORD: ENV[“BASIC_AUTH_PASSWORD”]
}
“`上記の記載をすることで、bundle exec cap production deployをすると
デプロイ端末の環境変数の値がデプロイ先の環境変数の値になります。#### 同じ環境変数をデプロイ先で設定していた場合、上記の記述の値が優先されますのでご注意ください。
rspec + FactoryBot で Class名を省略して create や build を直接書く設定 ( #Rails )
# Factory_botの設定
`spec/rails_helper.rb`
“`rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methodsend
“`これで
– FactoryBot.create を create と書けるようになる
– FactoryBot.build を build と書けるようになる
– etc etc[RailsアプリへのRspecとFactory_botの導入手順 – Qiita](https://qiita.com/Ushinji/items/522ed01c9c14b680222c)
# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2738
[メモ]2019/11/19 Ruby SNS投稿保存 基礎
###ルーティング posts
これまでルーティングを書く際は「get」を使用していましたが、フォームを受け取る際は「post」とする必要がある。“`ruby
get “posts/new” => “posts#new”
post “posts/create” => “posts#create”
“`###投稿内容を受け取るアクション作成
form_tagメゾットを用いる。
「form_tag(送信先URL) do」とするとフォームに入力されたデータを送信することができる。
これにより投稿ボタンを押したさい、登録された送信先URLにデータが送信される“`
<%= form_tag("/posts/create") do %>
<% end%>
“`###リダイレクト
他のURLに転送するために使う。
今回は投稿内容を投稿一覧画面へ転送する。
他のURLに転送(リダイレクト)するには「redirect_toメソッド」を用いる。
「redirect_to(UR
AWS Cloud9 で rails server して、Ctrl+C せずにターミナルを閉じた場合
AWS Cloud9 で rails server して、Ctrl+C せずにターミナルを閉じてしまうことがあるので、プロセスを切る方法をメモ。
– “`c9 open
/tmp/pids/server.pid“`
– 記載されている番号を確認
– “`kill xxxx“`
– (記載されていた番号)
– “`rails s“`
– あらためてサーバーを起動
Rspecでdrag&dropをテストする
# はじめに
Rspecでdrag&dropのテストのやり方についてまとめておきます。#結論
1.Google Chromeをサーバーにインストール
2.selenium_chrome_headlessを使用する設定を行う
3.drag_toメソッドを使用する
これにより、テストを行うことができました。#環境構築から、テスト実行まで
今回実行できるか確認した手順です。DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】@kodai_0122
(https://qiita.com/kodai_0122/items/795438d738386c2c1966) を参考にさせていただき、テスト環境の構築を行います。詳しくは、上記のリンクの記事にまとまってますので、ご確認ください。
“`
$ mkdir spec_test_app
$ cd spec_test_app
“`“`text:Dockerfile
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y
Ruby on Rails チュートリアル第11章 アカウントの有効化
#アカウントの有効化
現時点のアプリケーションは、新規登録したユーザーは初めからすべての機能にアクセスできるようになっている (第7章)。本章では、アカウントを有効化するステップを新規登録の途中に差し込むことで、本当にそのメールアドレスの持ち主なのかどうかを確認できるようにする。
アカウントを有効化する段取りは、次のようになる。1.ユーザーの初期状態は「有効化されていない」(unactivated) にしておく。
2.ユーザー登録が行われたときに、有効化トークンと、それに対応する有効化ダイジェストを生成する。
3.有効化ダイジェストはデータベースに保存しておき、有効化トークンはメールアドレスと一緒に、ユーザーに送信する有効化用メールのリンクに仕込んでおく。
4.ユーザーがメールのリンクをクリックしたら、アプリケーションはメールアドレスをキーにしてユーザーを探し、メールのリンクに含まれる有効化トークンを、データベース内に保存しておいた有効化ダイジェストと比較することでトークンを認証する。
5.ユーザーを認証できたら、ユーザーのステータスを「有効化されていない」から「有効化済
【Rails】RuboCopの基本的な使用方法と出力の見方
## はじめに
RubyのLinterツールであるRuboCopについて以下内容をまとめました。– インストール方法
– 基本的な使用方法
– 出力の見方
– 規定の設定(他記事へのリンク)保守性が高く、キレイなコードを書けるようになっていきたいです:writing_hand:
## この記事が役に立つ方
– RuboCopを使ったことがない方## この記事のメリット
– RuboCopが使えるようになる
– 最低限出力が読めるようになる## 環境
– macOS Mojave バージョン10.14.6
– シェル:zsh
– Ruby 2.6.3
– Rails 6.0.1
– RuboCop 0.76.0## RuboCopとは?
公式サイトはこちらです。
[Home – RuboCop: The Ruby Linter that Serves and Protects](https://rubocop.readthedocs.io/en/latest/)Railsでポートフォリオを作ってみよう! vol.4 (RSpec・FactoryBot編 後編)
前回までで一通りの導入から設定は完了した為、今回はテストの実装を行う。
今回はRailsTutorialの流れでは第6章を実装するが、簡略しているところがほとんどなので、もっと細かく知りたい人は調べてみてほしい。#テストの実装
テストを実装する。第6章はUserモデルのバリデーションについてのテストが多いためそこをピックアップして実装する。## FactoryBotを使ってみよう
前回導入を行なったFactoryBotを使い、テストユーザーのセットアップを行う。“`
$ docker-compose run web bin/rails g factory_bot:model user
“`を実行後user.rbが作成されるため
“`spec/factories/users.rb
#現在のFactoryBotのVerでは以下の書き方は非推奨となっている
#後ほど詳しく説明する
FactoryBot.define do
factory :user do
name “ExampleUser”
nickname “Example”
seq
erbで、複数行コメントアウト
## コード
“`erb
<% =begin %>コメントアウトされている
<% =end %>
“`## 説明
=の部分を左にくっつけないといけない。
忘れてしまう事があったので、備忘録として。
【AWS EC2】`find_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
#あなたのターミナルにはこのようなエラーが出ていますか?
“`console
[ec2-user@ip-XXX-XX-XX-XXX xxxxxx]$ bundler -v
Traceback (most recent call last):
2: from /home/ec2-user/.rbenv/versions/2.5.1/bin/bundler:23:in `‘
1: from /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path’
/home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe’: can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
“`#入力するコマンド
“`console
$
Railsチュートリアル学習 備忘
備忘 1章~
メソッドの()は省略で書かれることが基本
Refactor(コードの可読性とか問題)ページネーション(htmlを分けるやつ)
<%= render 'layouts/header' %> に対して
_header.html.erbrails _5.1.6_(バージョン) new apurimei(アプリ名)
Gemfileで設定したら保存してから
bundle install –without production
bundle updateGit
git config –global user.name “Your Name”
git config –global user.email your.email@example.com
(情報を合わせて書かないとGitHubは反応しない)一連の流れ
git init 準備
git add -A 選択
git commit -m “メッセージ” 反映
git pushgit log 確認
git checkout -f 前コミットに戻る
もっと戻すときはブランチHeroku
bundle