Ruby on Rails初学者がscaffoldを使ってみた

Ruby on Railsマイグレーションして、ユーザ登録画面を作ってみる。

ここで登場 scaffold !!

scaffoldは、CRUD処理(作成、読み込み、更新、削除する処理)を自動で作ってくれる機能。(最高かよ...)
MVCを全て作成し、DBのmigrateファイルも作ってくれる。

おいおい、、至れり尽くせりじゃないの。

 

さっそく貪っていく。

 

実行コード:

 

bundle exec rails generate scaffold user name:string age:integer prof:text 

 
これでクラスが作られる。
このコードでこんなテーブルが生成される。

テーブル名:user

カラム:name 型:文字列

カラム:age  型:数値

カラム:prof  型:テキスト

 

 

直接DBをいじるのではなく、

「DBファイルをどうするのか?」というファイルを作ってから、DBに反映させていく。

実行結果:

class CreateUsers < ActiveRecord::Migration[6.0] //アクティブレコードを継承
def change
create_table :users do |t| //:usersを do でループする。 変数 tに格納
t.string :name
t.integer :age
t.text :prof

t.timestamps
end
end
end
 
bin/rails db:migrate
bundle exec rails s
でWEBサーバーを開始
 
に接続してみる
 

f:id:TMLabo:20200129212314p:plain

中身: index.html.erb
<p id="notice"><%= notice %></p>

<h1>Users</h1>

<table>
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Prof</th>
<th colspan="3"></th>
</tr>
</thead>

<tbody>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.age %></td>
<td><%= user.prof %></td>
<td><%= link_to 'Show', user %></td>
<td><%= link_to 'Edit', edit_user_path(user) %></td>
<td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>

<br>

<%= link_to 'New User', new_user_path %>
 
格好よくはないが、機能としての
ユーザー登録、データ更新、データ削除が可能な機能、
そしてそのインターフェースが出来上がってしまった。
 
効率化最高。
 

【Postgresエラー対応】psql: error: could not connect to server: could not connect to server:

こんばんは。

 

久しぶりにpostgresを叩き起こそうかと思ったら、見事以下のエラー文句を吐き出されました。。。

f:id:TMLabo:20200128233125p:plain

エラー内容はこちら。

psql: error: could not connect to server: could not connect to server: No such file or directory

Is the server running locally and accepting

connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

 

macのアプリケーション > ユーティリティ > コンソール.app にて、

システムログを確認すると、、、

(homebrew.mxcl.postgresql[64520]): Service exited with abnormal code: 1

と延々と出力。

 

対応1→結果NG

postmaster.pidを削除してサービスを再起動する


$ rm /usr/local/var/postgres/postmaster.pid
$ brew services restart postgresql

 

対応2→結果OK

こちらを参考にしました。

https://qiita.com/akito19/items/409f06c61b5b8dc0ebaa

https://techracho.bpsinc.jp/hachi8833/2017_12_21/48661

 

再インストール→ディレクトリ初期化


//PostgreSQLを再インストール
$ brew uninstall postgresql
$ brew install postgresql

//元々のPostgreSQLディレクトリを削除し、初期化
$ rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

 

f:id:TMLabo:20200128234627p:plain

初期化後
//最後にDBに入る
$ psql postgres

 

やっとテーブル作れます。

 

 

 

 

bable を installしてgulpできるように設定していく※完全備忘録

完全備忘録ですのでお気に召さぬようでしたら失礼。

 

状況

gulpでタスクランナー実行したい

 

環境

packge.jsonディレクトリに格納。

 

手順

①packge.jsonのあるディレクトリでコマンド実行

 
npm install
 

 

②babel-cli とeslintをインストール


npm install --global babel-cli  //babelをインストール

npm install -g eslint //ESlintをインストール

 
③魔法の呪文
簡単に言うと、browserrifyをgulpで使うときの設定みたいですね。

npm install --save-dev browserify babelify gulp vinyl-source-stream
 
詳しくはこちらをご覧ください(駆け出しなもので...)
 
④gulp実行
 
gulp
 
 
 ↓ 結果はこんな感じ

f:id:TMLabo:20191108233014p:plain

ちゃんとできてエライ

以上。

 
 

AssertionError [ERR_ASSERTION] [ERR_ASSERTION]: Task function must be specified が出た時。

AssertionError [ERR_ASSERTION] [ERR_ASSERTION]: Task function must be specified

 

が出ました。

Vue.jsを使う時に、gulpを走らせようとしました。

 

◆環境

npm 6.7.0

Node.js 12.13.0

CLI 2.2.0

gulp 4.0.3

 

◆対応

バージョン違いでしたのでこちらを参考にしました。

qiita.com

 

以下は私の詳細状況ですので、見ても見なくても大丈夫です←

 

◆状況

gulpやらnode.jsやらを詰め込んだpackge.jsonを npm install した後に、gulpと実行しました。(すでにタスク作成済み)

すると下記エラーが発生。※一部見やすいように改行

 
XXXXXXXXXXXX:vue_sample01 t.nishimura$ gulp
[21:57:54] Requiring external module babel-register
assert.js:373
    throw err;
    ^

AssertionError [ERR_ASSERTION] [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (/Applications/MAMP/htdocs/vue_sample01/node_modules/
    undertaker/lib/set-task.js:10:3)
    at Gulp.task (/Applications/MAMP/htdocs/vue_sample01/node_modules/undertaker/
    lib/task.js:13:8)
    at Object.<anonymous> (/Applications/MAMP/htdocs/vue_sample01/
    gulpfile.babel.js:59:6)
    at Module._compile (internal/modules/cjs/loader.js:945:30)
    at loader (/Applications/MAMP/htdocs/vue_sample01/node_modules/babel-register/
    lib/node.js:144:5)
    at Object.require.extensions.<computed> [as .js] (/Applications/MAMP/htdocs/
    vue_sample01/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (internal/modules/cjs/loader.js:798:32)
    at Function.Module._load (internal/modules/cjs/loader.js:711:12)
    at Module.require (internal/modules/cjs/loader.js:838:19)
    at require (internal/modules/cjs/helpers.js:74:18) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}
 

 

npm を再インストールしても無駄。

gulpとnodeのバージョンが一致しなかったことが原因でした。

 

そこで、

node.jsとgulpをダウングレード 

"npm install -g n" → "sudo n 11.15.0"

 
XXXXXXXXXXXX:vue_sample01 XXXXXXXXXXXX$ npm install -g n
/usr/local/Cellar/node/12.11.1/bin/n -> /usr/local/Cellar/node/12.11.1/lib/node_modules/n/bin/n
+ n@6.1.0
added 1 package from 4 contributors in 1.114s
XXXXXXXXXXXX:vue_sample01 XXXXXXXXXXXX$ sudo n 11.15.0
Password:

  installing : node-v11.15.0
       mkdir : /usr/local/n/versions/node/11.15.0
       

 

じゃあこうなって、

f:id:TMLabo:20191106230845p:plain

f:id:TMLabo:20191106230958p:plain

インストール完了。

 

次にgulpの3をインストール

sudo npm install --save-dev gulp@3.9.1


XXXXXXXXXXXX:vue_sample01 XXXXXXXXXXXX$ sudo npm install --save-dev gulp@3.9.1
Password:
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN deprecated natives@1.1.6: This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.
npm WARN sample@1.0.0 No description
npm WARN sample@1.0.0 No repository field.

+ gulp@3.9.1
added 35 packages from 17 contributors, removed 133 packages, updated 13 packages and audited 14786 packages in 31.733s
found 8 vulnerabilities (2 low, 6 high)
  run `npm audit fix` to fix them, or `npm audit` for details
  

 

ここでエラーを無視して、(ダウングレードしてますので。)

gulpを入力すると、

f:id:TMLabo:20191106231300p:plain

なんとか走らせることに成功。

 

こういうのってやりごたえありますね。

以上

 

npm audix fixでエラー対応してみる

今日はgulp audix fixについて。

 

npm 6.7.0をインストールしている状況で npm install -g gulp を実行した時、

ズラアアアアアアっと文字列とErrorという赤文字が並び絶望に打ちひしがれました。

そして最後の方に

 

+ g@2.0.1

+ node-gyp@6.0.1

updated 2 packages and audited 9831 packages in 34.911s

found 372 vulnerabilities (16 low, 5 moderate, 351 high)

  run `npm audit fix` to fix them, or `npm audit` for details

 

と出てきました。

run ??実行しろと?

 

そうです。

 

これは脆弱性の対応で、開発者がパッケージの開発をやめてしまったりして脆弱性が生まれてしまいます。

そういう時は

$ npm audit  //警告文の原因となる詳細、危険度、run **** のように対応策の3点セットで表示してくれる

 こんな感じ↓

f:id:TMLabo:20191106224058p:plain

白色の背景色の箇所に解決方法書いてます。

$ npm audit fix  

 上記のコマンドは、直接解決方法を実行してくれます。

 

 

以上

fuelphpのインストールエラー対応

2019年10月時点のものです。

fuelphpをインストールするのですが、下記のコマンドを実行しました。

 

//クイックインストーラをインストール
curl get.fuelphp.com/oil | sh
 
悲しいことにエラーが帰ってきました。
sh: line 1: syntax error near unexpected token `newline'
sh: line 1: `<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">'

調べてみると接続の仕方が変わったらしいですね。

 

なので、こちらで実行するとインストールできました。

hhts:// をつけるだけです。

 

よかったよかった。

 

 

 

 

AWS configとCloud trailの違い

AWS configとCloud trailの違いに敏感な年頃になってしまいました。

 

AWS configとは

AWS Conifgは、AWSリソースの構成変更履歴(変更者、変更日時、変更内容)を自動的に記録・管理・可視化するサービスのことです。

 

コンプライアンス監査」「セキュリティ分析」「変更管理」「運用上のトラブルシューティング」を簡素化できる。これを使うことにより、リソースの構成変更履歴が管理しやすくなります。

 

具体的な利用状況

  • リソースの構成情報や変更履歴の検索
  • リソースの構成変更が発生した場合の通知
  • リソースの構成情報や設定変更操作を実行時点のキャプチャ

といったことができる点が便利なサービスです。

 

大規模なシステムになるにつれて、利用者も多くなり誰がどんな設定をしたのかすべてを把握することは困難となります。

AWS Configはトラブルシューティングや監査、コンプライアンスとして利用されています。

 

東京リージョンに対応しており、リージョンごとの管理です。

 

Cloud trailとは

AWSの操作履歴を追跡する監査サービスのことです。

AWS Conifgと違い、こちらはユーザーの操作履歴を管理するサービスとなり、構成情報の変更履歴をまとめるには管理しにくいです。

 

できること

  • AWS全体でアカウントアクティビティをログに記録、継続監視し保持。
  • AWSアカウント内のすべてのAPI呼び出しを記録。

つまり、AWSアカウント内における全ての操作を記録できます。

 

ユーザーの操作履歴を管理するAWS Configと統合することにより、運用上の問題の原因を特定することができます。

Cloud trailの記録を活用してアカウント内の設定変更と特定のイベントを関連付けることも可能です。

 

まとめ

AWS Config    ⇒ ユーザーの構成変更を確認

AWS CloudTrail  ⇒ ユーザーの操作履歴を確認

 

 

AWSのサービスっていまや165サービスもあるので、白書なんて作ったら面白いでしょうね。