個人アプリ開発 RSpec 単体テスト
作業内容
gemのRSpecを使用し、単体テストを行いました。
手順を自分なりにまとめながら進めました。
今回はユーザー登録の際のテストを記述しましたが、
これだけでは少なすぎるので、今後もう少し増やしていきたいと思います。
現場でテストは必須ですし、DevOps系の技術を学ぶ際にも重要だと思うので、記述量を増やしつつ理解を深めていきます。
gem インストール
group :development, :test do ーーー省略ーーー gem 'rspec-rails' end group :development do gem 'web-console' end
→bundle install
RSpecの設定
$ rails g rspec:install #RSpec用設定ファイルの作成
specファイルの作成
→テストを実行(中身が空のコード)
[spec/models/user_spec.rb] require 'rails_helper' describe User do describe '#create' do it "nicknameがない場合は登録できないこと" do end end end
describe:
直後のdo ~ endまでのテストのまとまりを作り、””の中に説明を入れる
itとexample:
実際に動作するテストコードのまとまり。""の中にはそのexampleの説明を書く。
エクスペクテーション:
実際に評価される式。it do ~ endの間に書く。
→文法は”expect(X).to eq Y”
マッチャ:
エクスペクテーションの中で、テストが成功する条件。
eqは「等しければ」という意味。
他にもinclude(含んでいれば)、valid(バリデーションされれば)などがある。
$ bundle exec rspec => User #create nicknameがない場合は登録できないこと Finished in 0.1379 seconds (files took 3.28 seconds to load) 1 example, 0 failures
現在はまだテストとして評価される式を書いていないので、テストは無条件でパス。
実際に記述していく。
ユーザー名がない場合
require 'rails_helper' describe User do describe '#create' do it "nameがない場合は登録できないこと" do user = User.new(name: nil, email: "kkk@gmail.com", password: "00000000", password_confirmation: "00000000") user.valid? expect(user.errors[:name]).to include("を入力してください") end end
factory_botを導入
factory_bot:
ダミーのインスタンスを作成することができるGem。exampleの記述を減らし効率化する。
1.gem install
2.specディレクトリ直下に「factories」というディレクトリを追加し、その中に「users.rb」という名前でファイルを作成
3.users.rbの編集
FactoryBot.define do factory :user do name {"teramoto"} email {"kkk@gmail.com"} password {"00000000"} password_confirmation {"00000000"} end end
★buildメソッド
#factory_botを利用しない場合 user = User.new(name: "abe", email: "kkk@gmail.com", password: "00000000", password_confirmation: "00000000") #factory_botを利用する場合 user = FactoryBot.build(:user)
★createメソッド
#createしたインスタンスはDBに保存される user = FactoryBot.create(:user)
※1回のテストが実行され、終了する毎にテスト用のDBの内容がロールバックされる。(保存された値がすべて消去されてしまう)
従って、binding.pry等でテストの実行を一時停止しないとテスト用のDBに保存された値をSequel Pro等で確認することはできない。
factory_botの記法の省略
rails_helper.rb
#省略 RSpec.configure do |config| #下記の記述を追加 config.include FactoryBot::Syntax::Methods #省略 end
省略を用いて、記述の変更
it "nameがない場合は登録できないこと" do user = build(:user, name: nil) user.valid? expect(user.errors[:name]).to include("can't be blank") end
テストコードを書く際の原則
①各exampleで期待する値は1つ
②期待する結果をはっきりわかりやすく記述
③起きて欲しいことと起きてほしくないこと両方をテストする
④境界値をテストする
⑤可読性を考えつつ、適度にDRYにする
上記を基にユーザー登録時のテストを書いていきました。
個人アプリ開発 AWS S3
本日も引き続きAWSの作業。自分なりにまとめながら進めていきました。
S3を導入しました。
セキュリティ対策
AWSは従量制のサービスのため、他人がなりすましでログインして膨大な処理を行うと、それに対する支払いが発生する。
セキュリティ対策① 二段階認証
二段階認証:
あるサービスにログインする際に、通常パスワードに加えて、別の方法でも認証されないとログインできないようにする仕組み
・アプリAuthyを使用し設定
1.ローカルからS3にアップロード
S3で保存先を用意
バケット:
S3で、実際にデータが格納される場所
躓き
本番環境で画像がUPされない現象が起こりました。
1.星形のイメージ図が表示されない
→パスの参照をasseteからpublic/asseteに変更できていませんでした。
2.投稿画像が表示されない
→capistrano導入前の投稿についてはパスの参照変更が適用されなかった(多分)
→新たに投稿した画像はちゃんと見れることが確認できました。
本番環境の不具合は肝が冷えます笑
ただこの一週間AWSと格闘して、やるほど理解は進んでいく気がしています。
自分なりにPDCAを回し、初期より対策ができるようになってきました。
・不具合確認→
・開発環境で同様の現象は起きていないか→
・サーバ・DB再起動→
・ログの確認→
・不明であれば検索し、仮説を立てる→
・仮説を潰していく
以降、引き続き作業を行いたいと思います。
日々精進していきます。
個人アプリ開発 AWS 自動デプロイ
今日は自動デプロイをする為に、capistranoを導入していきました。
ただ作業するだけでなく、自分なりに手順をまとめながら進めました。
Capistranoの導入準備
Gemをインストール
[Gemfile] group :development, :test do gem 'capistrano' gem 'capistrano-rbenv' gem 'capistrano-bundler' gem 'capistrano-rails' gem 'capistrano3-unicorn' end
→bundle install
ファイルの生成
bundle exec cap install
Capfileを編集
require "capistrano/setup" require "capistrano/deploy" require 'capistrano/rbenv' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' require 'capistrano3/unicorn' Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
デプロイについての設定ファイルを編集
cap installコマンド
→config/deploy配下にproduction.rbとstaging.rbの2種類のファイルを生成
[config/deploy/production.rb] server '<用意したElastic IP>', user: 'ec2-user', roles: %w{app db web}
[config/deploy.rb] # config valid only for current version of Capistrano # capistranoのバージョンを記載。固定のバージョンを利用し続け、バージョン変更によるトラブルを防止する lock '<Capistranoのバージョン>' # Capistranoのログの表示に利用する set :application, '<自身のアプリケーション名>' # どのリポジトリからアプリをpullするかを指定する set :repo_url, 'git@github.com:<Githubのユーザー名>/<レポジトリ名>.git' # バージョンが変わっても共通で参照するディレクトリを指定 set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') set :rbenv_type, :user set :rbenv_ruby, '<このアプリで使用しているrubyのバージョン>' #カリキュラム通りに進めた場合、2.5.1か2.3.1です # どの公開鍵を利用してデプロイするか set :ssh_options, auth_methods: ['publickey'], keys: ['<ローカルPCのEC2インスタンスのSSH鍵(pem)へのパス(例:~/.ssh/key_pem.pem)>'] # プロセス番号を記載したファイルの場所 set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" } # Unicornの設定ファイルの場所 set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" } set :keep_releases, 5 # デプロイ処理が終わった後、Unicornを再起動するための記述 after 'deploy:publishing', 'deploy:restart' namespace :deploy do task :restart do invoke 'unicorn:restart' end end
[config/unicorn.rb] # ../が一つ増えている app_path = File.expand_path('../../../', __FILE__) worker_processes 1 # currentを指定 working_directory "#{app_path}/current" # それぞれ、sharedの中を参照するよう変更 listen "#{app_path}/shared/tmp/sockets/unicorn.sock" pid "#{app_path}/shared/tmp/pids/unicorn.pid" stderr_path "#{app_path}/shared/log/unicorn.stderr.log" stdout_path "#{app_path}/shared/log/unicorn.stdout.log"
nginxの設定ファイル
[rails.conf] upstream app_server { # sharedの中を参照するよう変更 server unix:/var/www/<アプリケーション名>/shared/tmp/sockets/unicorn.sock; } server { listen 80; server_name <Elastic IPを記入>; # クライアントからアップロードされてくるファイルの容量の上限を2ギガに設定。デフォルトは1メガなので大きめにしておく client_max_body_size 2g; # currentの中を参照するよう変更 root /var/www/<アプリケーション名>/current/public; location ^~ /assets/ { gzip_static on; expires max; add_header Cache-Control public; # currentの中を参照するよう変更 root /var/www/<アプリケーション名>/current/public; } try_files $uri/index.html $uri @unicorn; location @unicorn { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; } error_page 500 502 503 504 /500.html; }
Nginxの設定を変更したら、忘れずに再読込・再起動
[ec2-user@XXX]$ sudo service nginx reload [ec2-user@XXX]$ sudo service nginx restart
MySQLを再起動
[ec2-user@XXX]$ sudo service mysqld restart
自動デプロイ
# アプリケーションのディレクトリで実行 $ bundle exec cap production deploy
躓き
デプロイ時エラー
上記実行したところ、エラーが発生。
00:00 git:check 01 git ls-remote git@github.com:kogegoro0930/aquq-log.git HEAD 01 ERROR: Repository not found.
→指定したリポジトリ名が違った。
▶︎修正したところ、うまくいきました。
画像が表示されなくなった
・config内ファイルの設定変更
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? ↓ config.public_file_server.enabled = true
→不可
▶︎capistranoを使用したことにより、画像を参照するパスが変わっているようなので、
S3を導入し画像をアップロードできるようにし、様子を見てみることにしました。
ちょっと今回は解決に時間をかけてしまいました。
よくエラー内容を確認すればすぐに分かったはずが、これまでのトリッキーなエラーに引っ張られ、複雑に考えてしまいました。
まずちゃんとエラー内容を把握してから仮説を立てることが大事だと再認識しました。(当たり前すぎますが、これも経験ですね・・・)
日々精進していきます。
個人アプリ開発 AWS Nginx導入・エラー解決
本番環境を確認。
ログイン時・未ログイン時で一通り操作を行い、出てきたエラーを解決していきました。
躓き1
ログアウト時のエラー
ログアウトしようとすると、下記エラーが出ました。
”The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.”
他にも”いいね”しようとした時も同様のエラーが。
・unicornを停止中にrake assets:precompile
→不可
・ログを確認すると、HTTPメソッド[Post][Delete]を[Get]で探しにいっている。
→エディタでビューを確認するが、ちゃんと指定はできている。
・さらに調べたところ、上記はjsでエラーがある場合に起こる不具合らしい
→consoleでjsを確認し、エラーを確認。よく確認すると、ローカルでもエラーが出ていました!
→不要な記述があった為削除し、ローカルで修正
・ローカルの修正をpushし、本番環境でgit pullするが、コンソールのエラーが消えず。
→アセットをプリコンパイルし、エラーの解消を確認できました!
[ec2-user@XXX <リポジトリ名>]$ bundle exec rake assets:precompile RAILS_ENV=production
▶︎動作確認。ログアウト、いいね機能なども問題なし。
Nginxの導入と設定
Webサーバの役割:
1.静的なコンテンツをレスポンスとしてクライアントに返す処理
2.動的なコンテンツ生成をアプリケーション本体に依頼する処理
3.アプリケーションサーバから返ってくる処理結果をレスポンスとしてクライアントに返す処理
アプリケーションサーバ:
動的なコンテンツを生成し、処理結果をWebサーバに返すという役割を果たす
Nginxをインストール
[ec2-user@XXX]$ sudo yum -y install nginx
Nginxの設定ファイルを編集
下記手順で設定
[ec2-user@XXX]$ sudo vim /etc/nginx/conf.d/rails.conf
2. VimでNginxの設定を編集
3. nginxの権限を変更
POSTメソッドでもエラーが出ないようにするために、下記のコマンドも実行
[ec2-user@XXX]$ cd /var/lib [ec2-user@XXX]$ sudo chmod -R 775 nginx
4. Nginxを再起動して設定ファイルを再読み込み
[ec2-user@XXX]$ cd ~ [ec2-user@XXX]$ sudo service nginx restart
個人アプリ開発 AWSデプロイでハマった
前回の記事で一通りデプロイ作業を行いましたが、結果本番環境で表示を確認することができませんでした。
今日はエラーログを辿り、一つ一つ解決していきました。
躓き
1.Railsが起動できない。
EC2のアプリのディレクトリで下記コマンドを実行するとエラーが出ました
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
・手順を見返し、漏れがないか確認
→問題無し
・ローカルのmasterのpush、EC2側でpullがちゃんとできているか確認
→問題無し
・EC2インスタンスの再起動
→問題無し
・デバッグし確認
EC2サーバ側で、/var/www/<リポジトリ名>/log/unicorn.stderr.logをlessコマンドで確認
→エラーが出ていたが、内容が分からない
”bundler: failed to load command: unicorn_rails (/home/ec2-user/.rbenv/versions/2.5.1/bin/unicorn_rails)
ArgumentError: Unknown key: :throgh. Valid keys ….”
・ひたすらググる
→stack overflowで同じエラーをリレーションの改善で解決した例を発見。
自分のコードを見返してみる
▶︎不要なモデルがあり、また、そのリレーションをしっかり記述できていなかったことが原因だった。
モデルを削除し、関連するリレーションの記述も削除することで、Railsの起動ができた。
2.本番環境のURLを叩くとページが表示されない
下記エラーが出て表示がされませんでした。
We're sorry, but something went wrong.
・エラーログを確認
$ cd /var/www/app-name $ cd log $ cat production.log
するといくつかのエラーが確認できた
ActionView::Template::Error
調べたところ、開発環境と本番環境でimagesディレクトリへのパスが異なるために起きたエラーだった。
アセットコンパイル前(開発環境) app/assets/images アセットコンパイル後(本番環境) public/assets/images
・下記のようにパスの指定方法を変更
image_tag asset_path('ファイル名')
上記を試したが、ログのエラーが消えず、サイトを見れない
▶︎unicornを再起動できていなかった。
これでやっとサイトを見れるようになりました。
3.一部の表示がおかしい
TOPページの一部、faviconの表示がされない。
・ログを確認すると、下記エラーが。
Uglifier::Error: Unexpected token: name (w). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
「ES6を使うにはUglifier.new(:harmony => true)でharmony modeを有効にしてね」とのこと
→調べたところ、UglifierはJavaScriptの圧縮をしてくれるgem。ただES5までしか対応していなかった。
▶︎本番環境の設定ファイルを編集
[config/environments/production.rb] # config.assets.js_compressor = :uglifier →コメントアウト
▶︎再度アセットファイルをコンパイル、Unicorn、Railsの再起動
問題なく表示がされるようになった。
エラーでアセットファイルのコンパイルが正しく完了していなかったことが原因だったようです。
感想
デプロイはまだ不慣れだったことや、工程が長かったこと、あともし解決できなかったら、これまでの努力が水の泡になってしまうのではないかという不安で、めちゃくちゃ焦りました。
ただ試行錯誤したことで、サーバサイドの理解が深まったと思います。
ひとまずデプロイができて安心しました。
まだまだ一喜一憂ありますが、日々精進していきます。
コマンドまとめ
# EC2ログイン cd .ssh/ ssh -i aqua-log.pem ec2-user@54.249.237.209 cd /var/www/ cd /var/www/aquq-log/ # ログ確認 cd log cat production.log cat log/production.log # Git pull git pull origin master # Mysql再起動 $ sudo service mysqld stop $ sudo service mysqld start # Nginx再起動 $ sudo service nginx restart # Unicorn再起動 # プロセスを確認 [ec2-user@XXX <リポジトリ名>]$ ps aux | grep unicorn # 「unicorn_rails master」と表示されているプロセスがUnicornのプロセス本体 # killコマンドを入力してUnicornのプロセスを停止 [ec2-user@XXX <リポジトリ名>]$ kill <確認したunicorn rails masterのPID> [ec2-user@XXX <リポジトリ名>]$ RAILS_SERVE_STATIC_FILES=1 unicorn_rails -c config/unicorn.rb -E production -D
個人アプリ開発 AWSデプロイ
- 作業内容
作業内容
既にTECH CAMPのカリキュラムでASWのアカウントを作成し、アプリのデプロイをしていました。
今回は復習も兼ねて、一つ一つの手順を自分なりにまとめながら、新たにアカウントを作成しデプロイを行いました。
1.AWSアカウント作成
新しいメールアドレスで新規アカウントを作成。
2.EC2 サーバのセットアップ
EC2:
時間単位で利用できるサーバ。設定によりターミナルを介して遠隔操作できる。
リージョンの設定
AWSの物理的なサーバの場所を指定する。
リージョンは世界各地に10箇所以上存在。
リージョン間でEC2の設定は独立していて、あるリージョンのEC2を他のリージョンへ移動することはできない為、EC2を立ち上げる際には、「どのリージョンの設定か」を意識するようにする。
AMIの選択
AMI:
「Amazon Machine Image」の略語で、サーバのデータをまるごと保存したデータのこと。この中には、OSやWEBサーバなどが事前にインストールされているものもあり、自分でゼロからインストールする手間を削減することができる。
→今回は「 Amazon Linux AMI 」AWSが独自にカスタマイズしたAMIを利用。
Elastic IPの作成と紐付け
作成したEC2インスタンスには、作成時にIPアドレス(パブリックIP)が自動で割り振られている。
しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点がある。
Elastic IP:
AWSから割り振られた固定のパブリックIPアドレス。
これをEC2インスタンスに紐付けることで、インスタンスの起動、停止に関わらず常に同じIPアドレスで通信をすることが可能になる。
ポートを開く
立ち上げたばかりのEC2インスタンスはSSHでアクセスすることはできるが、HTTPなどの他の接続は一切つながらないようになっている。そのため、WEBサーバとして利用するEC2インスタンスは事前にHTTPがつながるように「ポート」を開放する必要がある。
セキュリティグループの変更
セキュリティグループ:
EC2インスタンスが属するまとまりのようなもので、複数のEC2インスタンスのネットワーク設定を一括で行うためのもの。
アクセス制限(ルール)の追加
→タイプを「HTTP」、プロトコルを「TCP」、ポート範囲を「80」、送信元を「カスタム / 0.0.0.0/0, ::/0」に設定
EC2インスタンスへのログイン
ec2-userでログイン
ec2-user:
EC2インスタンスを作成時に生成され、一緒に生成されるSSH秘密鍵と対応したユーザー。本来はこのec2-userではなく、サービスを稼働させるためにより権限を小さくしたユーザーを作成して運用していくが、今回は簡易化の為こちらを使用し進めていきました。
$ cd ~ $ mkdir ~/.ssh # .sshというディレクトリを作成 # File existsとエラーが表示された場合、.sshディレクトリは存在しているということ $ mv Downloads/ダウンロードした鍵の名前.pem .ssh/ # mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動します。 $ cd .ssh/ $ ls # pemファイルが存在するか確認 $ chmod 600 ダウンロードした鍵の名前.pem $ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP #(ダウンロードした鍵を用いて、ec2-userとしてログイン)
3.EC2のRuby/Rails環境構築
設定用のツールをインストール
yumコマンド:
Linuxにおけるソフトウェア管理の仕組み。MacOSにとってのhomebrewと同じ役割を果たす。
パッケージをアップデート
$ sudo yum -y update
その他環境構築に必要なパッケージを諸々インストール
$ sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel libcurl libcurl-devel curl
- yコマンド:
オプションで-yを設定する事で全ての問いにYesで自動的に答えるように設定してインストールするコマンド
Node.jsをインストール
Node.js;
サーバーサイドで動くJavaScriptのパッケージです。今後のデプロイに向けた作業の中で、CSSや画像を圧縮する際に活用される。
$ sudo curl -sL https://rpm.nodesource.com/setup_6.x | sudo bash - $ sudo yum -y install nodejs
rbenvとruby-buildをインストール
rbenvとruby-build:
Rubyのバージョンを管理する際に組み合わせて使うツール
#rbenvのインストール $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv #パスを通す $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile #rbenvを呼び出すための記述 $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #.bash_profileの読み込み $ source .bash_profile #ruby-buildのインストール $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build #rehashを行う $ rbenv rehash
4.MySQLの設定と動作確認
MySQL:
Oracle社が開発・提供をしているRDBMS
扱いのシンプルさと処理の速度を考慮し使用しました。
MySQLを起動
$ sudo service mysqld start
service コマンド:
Amazon LinuxやCentOSに含まれているもので、インストールしたソフトウェアの起動を一括して行えるツール
mysqld:
「d」はLinuxの用語で「サーバ」を意味する「デーモン(daemon)」の頭文字
$ sudo service mysqld status
起動できたか確認
MySQLのrootパスワードの設定
sudo /usr/libexec/mysql56/mysqladmin -u root password 'ここを設定したいパスワードに変更してからコマンドを実行'
yum でインストールしたMySQLには、デフォルトで root というユーザーでアクセス出来るようになっているが、パスワードは設定されていない
MySQLへの接続確認
$ mysql -u root -p
6.アプリケーションサーバの設定
Unicorn:
アプリケーションサーバ。ローカル環境のpumaにあたる。
ローカルでGemfile を編集
[Gemfile] group :production do gem 'unicorn', '5.4.1' end
$ bundle install
config/unicorn.rbを作成・編集
→変更修正をコミットしてプッシュ(masterブランチ)
7.本番環境での設定
EC2の能力を拡張
現状動かしているEC2のインスタンスではコンピューターの能力が足りず、Gemのインストール時などにエラーが発生する可能性がある(コンピューターの処理能力に関係するメモリというものが足りない)。
#ホームディレクトリに移動 $ cd $ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512 $ sudo chmod 600 /swapfile1 $ sudo mkswap /swapfile1 $ sudo sh -c 'echo "/swapfile1 none swap sw 0 0" >> /etc/fstab'
これで、Swap領域を確保することができました。
gemをインストール
クローンしたアプリケーションを起動するために必要なgemを以下のコマンドでインストール
1. クローンしたディレクトリに移動し、 rbenvでインストールされたRubyが使われているかチェック
2.本番環境でgemを管理するためのbundlerをインストールして、bundle installを実行
開発環境(ローカル)で開発してきたアプリで、どのバージョンのbundlerが使われていたのか確認
→同じバージョンのものをEC2サーバ側にも導入
環境変数の設定
環境変数:
データベースのパスワードなどセキュリティのためにGithubにアップロードすることができない情報は、環境変数を利用して設定
Railsからは ENV['<環境変数名>'] という記述でその値を利用することができる
secret_key_base:
Cookieの暗号化に用いられる文字列。Railsアプリケーションを動作させる際は必ず用意する必要がある。また、外部に漏らしてはいけない値であるため、こちらも環境変数から参照する。
1. secret_key_baseを作成
2.環境変数を設定
3. 設定した環境変数を反映させるために、一度本番環境をログアウト
4. もう一度本番環境へログイン
5. 設定した環境変数が本当に適用されているか確認
ポートを解放
セキュリティグループのポートを設定
→起動したRailsにアクセスできるようになる
8.Railsを起動
1.database.ymlの本番環境の設定を編集
2.ローカルでの編集をコミットして、GitHubにプッシュ
3.データベースを作成しマイグレーションを実行し直す
4.Railsを起動
9.アセットファイルをコンパイル
個人アプリ開発 かんたんログイン機能
作業内容
いろいろ調べてみると複数実装方法がありました。
1.htmlに隠しパラメータで忍ばせる
2.サーバ側で処理する
今回はビューに追記するだけで作成できる1.の方法で実装しました。
テストユーザーを新規作成
name:テストユーザー
email:test@example.com
password:password
ビューの編集
= form_for(User.new, url:user_session_path) do |f| = f.hidden_field :email, value: "test@example.com" = f.hidden_field :password, value: "password" = f.submit "かんたんログイン", class:"btn btn-lg center-block btn-success"
hidden_fieldで[params]をuser_session_path(sessions#create)に送信