testをやってみた パート4
時間が空いてしまった時間がすぎるのは早いものですね
今回はこの前deviseの実装を行ったので、今回はそれの、テストコードをやっていきます。
今回使うgemはこちらです。
これを使っていきます
bundle install
とDockerなので、buildし直していきます。
rails g rspec:install
.rspecの中に
--format documentationを追加
その次に今回テストするものを生成します。
rails g rspec:model user
これで、作られているものがあります、それを使っていきます。
今回テストしていくことは
User
#create
nameとemail、passwordとpassword_confirmationが存在すれば登録できること
nameが空では登録できないこと
emailが空では登録できないこと
passwordが空では登録できないこと
passwordが6文字以上であれば登録できること
passwordが5文字以下であれば登録できないこと
passwordとpassword_confirmationが不一致では登録できないこと
重複したemailが存在する場合登録できないこと
これらを試して、いくのですがいちいちテストするたびに、
名前・email・passwordを書くのは美しくないので、factorybot
文字が同じだったら、それ以外の言葉が通らないとかになってしまうと意味がわからないので、fakerを使います。
passwordは二回使うので、変数に入れて再利用します。
spec/models/user_spec.rb とfactorybotをくっつけます。
これで、くっつけました。それではテストしていきます。
少しこれだと意味がわからないとおもうので、やり方を解説します。
1つ目は @user は成功するので、成功すると証明になる、be_valid
これで、1つ目は成功です。
で使えるようになったbinding.pryを使います。valid?で聞いても一瞬で過ぎ去ってしますので、binding.pryで一度そこで、止めてそこでエラーがあるなら、何があるかなどを聞く猶予ができます。エラーがあるかを聞く方法は
docker-compose run web bundle exec rspec spec/models/user_spec.rbとコマンドして、binding.pryのおかげで止まって、猶予ができます。
@user.errors.full_messagesと聞きますそしたら、答えてくれます。
名前が空だからエラーだよってそしたら、binding.pryを消して、
expect(@user.errors.full_messages).to include("Name can't be blank")
これは、何をしているかというと、このときのエラーは、名前がないであるということになります。そしたら、名前がないというエラーは正解なので、ここの部分は完成しました、これを、他の空のやつにも、やっているだけですね。
一様見本に残すとこんな感じに自分はやった。
ログイン機能を作ろう。 パート3
devisegemを追加していきます。
参考
Docker使ったRails環境でdeviseを導入する手順 - Qiita
gemfile に
その後docker-compose run web bundle install
その後
docker-compose build
そしたら、gemが入っているはずなので、deviseをインストールします。
docker-compose run web rails g devise:install
これで、インストールできたはずなので、viewを作っていきます。
docker-compose run web rails g devise:views
モデルを作っていきます。
docker-compose run web rails g devise user
app/views/deviseの中にviewが追加されていて、
app/models/userというモデルが追加されています。
deviseの初期設定はemailとpasswordの2つです。最小限なものになっています。
ですが、今回はそれに加えて、nameを追加していきたいと思います。
db/migrate/20210223102723_devise_create_users(数字は違うかも?)
この中に t.string :nameを追加
次にapp/cotroller/application_controller.rb
5行目のsign_upは新規登録のことで、app/views/devise/registrations/new.erbに名前も追できる欄を追加していきます。
bootstrapの便利さよ、次にこれをheaderとして追加していきたいと思います。
headerを作る場所は共通部分として、書きたいので、app/veiws/layout/application.html.erbで、書きます
これは、if文で、ログインしているかどうかを、区別して、違う処理をしてくれる
<% if user_signed_in? %>
を使っています。
あとは、ログイン画面のviewもきれいにして、とりあえず今日はここまで、ちょっと雑なので気が向いたらきれいに編集していきたい!
次回はuserのテストコードを書いていきます。
固定費を勉強できるサイトを作りたい パート2
今回はbootstrapという、cssフレームワークを入れていきたいと思います。
では入れていきたいと思います
参考
初めてのRuby on rails Bootstrap導入編 [Memo for neko] - Qiita
gemfile にこれをいれて、
docker-compose run web bundle install(dockerが入っているから)
app/assets/stylesheets/application.css場所
@import "bootstrap";
これも実行
docker-compose run web mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
app/javascripts/packs/application.js
//=require bootstrap
続きをしようとしたとき
docker-compose run web rails g controller list index create show
これで、コントローラーが作れる!実行!!
え?!エラーが起きた
gemに問題が発生しているみたい
docker-compose build --no-cache
これをやったら処理に結構時間かかったけどその後。。。
治ったでは、今回はこんなもんでまた次回にまわします。
次回は、見た目などを作っていく予定です。
固定費を勉強できるサイトを作りたい パート1
企画
新しくアプリケーションを作っていこうと思います。
今回作る予定のアプリケーションは固定費共有成長アプリを作ろうと思っています。固定費をみんなどのようにやっているのかを、お互いに見て、固定費のうまい方法があったら、その人に、コメントなどして、教えを乞うことが、できるアプリにしようかと思いました、
まずはどのような機能を入れるか要件定義を行います。
要件定義
簡単に機能の定義はできました!その機能ごとの勉強をしないといけませんね
とりあえずDockerは初めてなので
こちらを参考にやっていこうと考えています。
linexもついでに詳しくなっときたかったので、
こちらを見ながら勉強をして、実装していきたいと思います。
さあ、続きを考えます
こちらも参照して、これを中心で、やっていきたいと思います、より具体的です。
必要なfileは
- Gemfile
- Gemfile.lock
- Dockerfile
- docker-compose.yml
- entrypoint.sh
やっていたら
zsh: command not found: docker-compose
このように言われるので、dockerをインストールしていきます。
- アカウント作成「Login to download」
- ダウンロード「Get Docker」
- Dockerアプリを起動する
- 管理者パスワードを聞かれるので、入力する
できたらエラーが解消されているはずです
プロジェクトを開く
この動画で、流れの勉強になります。少しバージョンが古い可能性があるので、エラーとかが多いような気がします
そして、自分も同じようにやって完了と、
ER図
VSCodeの拡張機能のDraw.io Integrationを使います
db.dioで作っていきます。
その他の図形から、ERを選びます。そうしたら高度の設定の下にERが登場します。
今回はこれを使ってやっていきます
ました!
次にREADME
を作成していきます。
今書けること、テーブルについて記述していきます。
その後も使い方など書いていくのですがそれは、また後で書こうかと思います。
では、書いていきます。READMEはマークダウン記法なので、vscodeの拡張機能の
をおすすめします。では書いていきます
マークダウン記法がわからない人はこの動画をおすすめします。
そして、仮ではありますがテーブル部分はできました!
それでは、今回はこれくらいで、これから、gem(ライブラリー)を追加していきます。
それでは、また次回に続く
プログラミンするまえの環境構築、ruby
今回は色々あってosを初期化して、環境設定からやっていきたいと思います。
前提条件
Googlechromeを使っています。
osbig surの2月18日現在最新のバージョン
まずはvscodeを導入していきます。
Visual Studio Code - Code Editing.
入れたらdockの方に持ってきて開きます。
右側にある
一番下のボタンを押してこの拡張機能を入れてください。
・Code Spell Checker
・HTML Snippets
・Japanese Language Pack for Visual Studio Code
・Ruby
・zenkaku
その後
左下の歯車押して、その後設定を押してください
その後
以下のように設定してください。
これでvscodeはとりあえずOKです。
次にcommand+spaceでターミナルと打ちます。そしてenterキーを押してください
そしたら、よくわからないものが開かれると思います。がこれを使って、色々設定していきます。
ruby 2.6.5
mysql 5.6
でやっていきます。
chsh -s /bin/zsh
echo $SHELL
xcode-select --install
その後インストール→同意→待つ
cd
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
passwordと出るのでpasswordを入力。
(入力画面は見えませんが打てています)
brew -v Homebrew 2.5.1 # 数字は異なる場合があります。
インストールできているのであれば、
brew update
sudo chown -R `whoami`:admin /usr/local/bin
brew install rbenv ruby-build
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc
brew install readline
rew link readline --force
RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)"
rbenv install 2.6.5
rbenv global 2.6.5
rbenv rehash
MySQLを用意しよう
brew install mysql@5.6
mkdir ~/Library/LaunchAgents
ln -sfv /usr/local/opt/mysql\@5.6/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql\@5.6.plist
echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
which mysql
mysql.server status # MySQLの状態を確認するコマンド # 以下のように表示されれば成功 SUCCESS! MySQL running
Railsを用意しよう
gem install bundler --version='2.1.4'
gem install rails --version='6.0.0'
rbenv rehash
Node.jsを用意しよう
brew install node@14
echo 'export PATH="/usr/local/opt/node@14/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
yarnを用意しよう
brew install yarn
yarn -v
Sequel Proをダウンロードし、インストールしましょう
ダウンロードしたものをアプリケーションフォルダに入れます。
そうしたら、command + spaceでsequal proを起動します。そうしたら
ソケットのなまえをlocalhost
ユーザ名をrootにします。
そしたらお気に入りを押して、接続!
GitHubアカウント
ここで、サインアップして、
その後、Join a free plan→Complete setu
p
メールの確認を行うように画面に表示されますので、メールの確認を行います。
登録したメールの受信箱にアクセスして、GitHubから送信されたメールを開きましょう。「@ユーザー名」と「メールアドレス」を確認して、登録内容と間違っていなければ「Verify email adress」をクリックしましょう。こちらも、とくに選択する必要はありませんので「Skip this for now」をクリックしましょう。
GitHub Desktopのインストール
https://central.github.com/deployments/desktop/desktop/latest/darwin
これを押して、ダウンロード
その後、zipなので解答して、アプリケーションフォルダに入れます
その後先ほど、登録したアカウントと、連携したます。
「Sign in to GitHub.com」をクリックしましょう
ログイン情報を入力すると、次にローカルでGitを扱う際の情報を入力する画面に移動します。GitHubアカウントと同じUsernameとメールアドレスを入力してください。
次に、利用状況を送信するかの確認画面に移動します。こちらについてはどちらでも構いませんが、とくに送信する必要はありませんので、今回はチェックを外しておきましょう
そしたら、とりあえず完了です。
お疲れ様でした。
Access denied for user 'root'@'localhost' (using password: YES)
今回もエラー解決やっていきたいと思います。
今回はMyqlにログインができないという問題かと思います。
このようなエラーが起こりましたpasswordを入力しましたが間違っているようです
パスワードも覚えていないので厳しい状況です。
一様真横に書いて行けるらしいので、それでやって見ましたが肝心のpasswordがわからないのでどうしようもない
ググります
このサイトを確認しました
自分がSSHをパスワードで管理しているのか公開鍵で管理しているのかもわからないので、自分がパスワードで管理していることを信じてこのサイトにあることをやっていきます
まさかのないという問題に直面
適当に
sudo mysql -u root -pを打って無理やり入りました。(よくないことだと思う)
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
このコマンドを打ってパスワードを変更してみたところ
mysql -u root -pMyNewPass
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
やっぱりだめか
とりあえずやはり
service mysqld stop
これを使えるようにしなければ
source ~/.bash_profile
を編集しないと
いけないのでしようとしたら
zsh compinit: insecure directories, run compaudit for list.
ぐぐったら
macでzshでzsh compinit: insecure directoriesの警告が出る問題 - Qiita
ここに書いてある通り
compauditに問題があるらしいので確認したところ
/usr/local/share/zsh/site-functions
/usr/local/share/zsh
この2つに問題があるらしいので
このサイトと同じエラーかもしれないので確認してみる
同じようにやって見た後
chmod 755 site-functions/
確認
compaudit
There are insecure directories:
/usr/local/share/zsh
減ってる
いけた!!
mysql.service stop
zsh: command not found: mysql.service
なんで?
新しくprojectを立てようとしたらエラーが出た
Could not find 'nokogiri' (>= 1.5.9) among 105 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/Users/rajakarunikarukaryouma/.gem/ruby/2.6.0:/Users/rajakarunikarukaryouma/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0', execute `gem env` for more information
多分このgemが入っていないと怒られたのだとおもう
bundle doctorで確認したところこんなに入らない奴らがいるぽい
gem 'bcrypt', '~> 3.1.7'
普通に入れようとしてもこのようなエラーが吐かれる
ERROR: While executing gem ... (Gem::Com
無理やりあまり使いたくないけどsudoを使ってインストール
sudo gem install puma -v '3.11'
Password:
Fetching puma-3.11.0.gem
Building native extensions. This could take a while...
Successfully installed puma-3.11.0
Parsing documentation for puma-3.11.0
Installing ri documentation for puma-3.11.0
Done installing documentation for puma after 0 seconds
1 gem installed
それでもう一度bundle doctor
mandLineError)
Unknown command bcrypt
The following gems are missing OS dependencies:
* bcrypt: /usr/lib/libSystem.B.dylib
* bindex: /usr/lib/libSystem.B.dylib
* bootsnap: /usr/lib/libSystem.B.dylib
* byebug: /usr/lib/libSystem.B.dylib
* ffi: /usr/lib/libSystem.B.dylib
* ffi: /usr/lib/libffi.dylib
* msgpack: /usr/lib/libSystem.B.dylib
* mysql2: /usr/lib/libSystem.B.dylib
* nio4r: /usr/lib/libSystem.B.dylib
* nokogiri: /usr/lib/libSystem.B.dylib
* nokogiri: /usr/lib/libexslt.0.dylib
* nokogiri: /usr/lib/libicucore.A.dylib
* nokogiri: /usr/lib/libxml2.2.dylib
* nokogiri: /usr/lib/libxslt.1.dylib
* nokogiri: /usr/lib/libz.1.dylib
* puma: /usr/lib/libSystem.B.dylib
* sassc: /usr/lib/libSystem.B.dylib
* sassc: /usr/lib/libc++.1.dylib
* websocket-driver: /usr/lib/libSystem.B.dylib
そしたら
だめか。。。。
gem update
ERROR: While executing gem ... (Errno::EACCES)
Permission denied @ dir_s_mkdir -
何かが邪魔しているのはわかるけどどうすれば?
gem install rails でハマった話 - Qiita
このサイトを見て権限がなくなった可能性を試したら何故か
いけました
rails s
それではいけるか?
おーーー!人生で初めてのクラッシュです。かっこいい
環境がおかしくなってきたので一度macのos
を初期化してもう一度最初からやろうと思います。環境設定も勉強になるので、それもブログとして、記載できたらなと思います
Starting MySQL . ERROR! The server quit without updating PID file (/usr/local/var/mysql/rajakarunikarukaryoumanoMacBook-Pro.local.pid).
sudo mysql.server start
このコマンドを打つとこのようなエラーがでる
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/rajakarunikarukaryoumanoMacBook-Pro.local.pid).
最初は
このサイトを使ってやってみましたが
pidを追加しても
sudo mysql.server start するたびに消えてしまいました
そのため他の方法を試しました
このサイトは再インストールする方法を解説していました
これをしたら
mysql.server start
Starting MySQL
SUCCESS!
できました!!
rails s
で確認したところ
このようなエラーが返ってきました
MySQL起動エラーの対処の仕方【Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError)】 - Qiita
このサイトを参考にすすめて行きます
その後bundle installしたら
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
と怒られ
【MySQL, Rails】「Gem::Ext::BuildError: ERROR: Failed to build gem native extension.」の対処 - Qiita
このサイトをみました
それでも解決ができなかったので怖いですがルビーを再インストールしようかとおもいました。
そこでまたエラーに出くわしました。
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
これはそんな難しい話じゃないらしくmacのosをアプデするたびに起こることらしいです。
このサイトを見て
xcode-select --install
して
xcode-select -switch <path to developer tools>
xcode-select -print-path /Library/Developer/CommandLineTools
その後一用インストールできました。
その後bundle installが通りまして rails sで確認しました。
このようなエラーが悲しいエラーと戦いながら5日何が辛いかというと進んでるかどうかがわからないのが辛い毎日少しづつ解決していくしかないですね
がんばります。次回に続きます