Pippi Life

主に仕事に関連するITのことや、プライベートもちょいちょい書きます。

rake db:migrateで作ったDBにアクセスする時にエラー

rake db:migrate で作成したあと rails sで起動して、http://192.168.33.10:3000/Userにアクセスしたら出たエラー

Cannot render console from 192.168.33.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255

これは

vi config/application.rb

で、以下を追加

config.web_console.whitelisted_ips = '0.0.0.0/0'

で解決した。

でもまだエラーがあって、

ActionController::RoutingError (No route matches [GET] "/User1"):

これはいろいろやってみたけど developmet.rbとか書き換えてみたり。。なぞ。

もう今日はおわりーと思って db:migrateでつくったやつ戻そうとコマンド調べて実行

rake db:migrate:reset
== 20150909130346 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0012s
== 20150909130346 CreateUsers: migrated (0.0026s) =============================

!?!!!!

users? ほうほう http://192.168.33.10:3000/users

見れますた。ちゃんとメッセージは見ましょうってことですな。

scaffoldの使い方

Railsには、scaffordという仕組みがあるらしいです。 なんかいい具合に、DBに反映してくれるらしい。

rails generate scaffold User name:string score:integer

これはdb/migrateに string型でnameと integer型でsocreという項目のあるUserってDB作ってよってことらしい。

そして

rake db:migrate

でDBが作成されるんだそうだ。

Rails sで起動したサーバーにローカルPCから接続できない

Ruby on Railsを勉強中です。 いや、Rubyも書いたことないけど、まぁなんとかなるでしょ、と始めましたが、 環境作りで手間取っております。

とりあえずVagrant upで落としてきたイメージを起動するところは到達。

rails new

コマンドもたどり着いた。

で、

rails s

でhttpサーバーが起動されるところまできたのだけど、 ブラウザから接続できない。。。。

ipも間違ってない、ポートフォワーディングの設定もあっている。。。 なんかオプションか?とおもいつつ

rails s -h

と打ったら、--binding=IP を発見。

    -p, --port=port                  Runs Rails on the specified port.
                                     Default: 3000
    -b, --binding=IP                 Binds Rails to the specified IP.
                                     Default: localhost
    -c, --config=file                Uses a custom rackup configuration.
    -d, --daemon                     Runs server as a Daemon.
    -u, --debugger                   Enables the debugger.
    -e, --environment=name           Specifies the environment to run this server under (test/development/production).
                                     Default: development
    -P, --pid=pid                    Specifies the PID file.
                                     Default: tmp/pids/server.pid

    -h, --help                       Shows this help message.

このPCってlocalhostだよなと思いつつ、 ふとAWSのanywhereの表現の0.0.0.0にのっとって

rails s -b 0.0.0.0

にしてみたら、つながった。 PCはMacなので、ifconfigとかしてみたらわかるかと思ったけど、、

rails s -b en0のip
rails s -b vboxnet0のip

でも繋がらなかった。 まぁ動くからいいか。。。

Windows Server 2012でカスタムメトリクス

気がつけばめっちゃさぼっていました。 Ansible,Terraformも今後載せていこうと思っています。 あとはaws cliとか。

とりあえず、Windows server2012でカスタムメトリクスがはまったので、備忘録的に。

2012の場合、Powershellが無効になっているので、Amazonが提供している方法に追加が必要です・

Get-ExecutionPolicy
Restricted

以下のコマンドを発行し、RremoteSignedにする。 Yを入力しエンターを押す

Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (http://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y

確認

Get-ExecutionPolicy
RemoteSigned

あとはサイトの提供する通りに。 →https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/mon-scripts-powershell.html

CentOS7のlocale設定

以下のコマンドで設定

localectl set-locale LANG=ja_JP.utf8

以下のコマンドで確認

localectl status
   System Locale: LANG=ja_JP.utf8
       VC Keymap: us
      X11 Layout: us

設定ファイルはここ

vi /etc/locale.conf

以下のコマンドでユーザーに反映

source /etc/locale.conf

S3に圧縮ファイルを格納する

S3は堅牢性が高いので、 ログの保管などに便利です。

例えばlogrotateを設定して 1日ごとにファイルを切り替えて圧縮したりとか。 で、圧縮ファイルをS3に格納する。

#!/bin/sh
#s3へファイルを移動する。
#引数:第1引数 ファイルのフィルタリング名フルパス
#   第2引数 バケット名

echo "start...";

#引数を変数に格納する。
S3_from=$1
S3_to=$2

#対象ファイルの抽出
targetfiles=`ls ${S3_from}`

#それぞれの対象について処理をする。
for i in `echo ${targetfiles}`
do
  #s3へ移動させる。
  aws s3 mv ${i} ${S3_to}
done

echo "end...";

なんかシンプルすぎるなwwww あ、エラー処理は省きました。