コンテンツにスキップ

2014

AWSのLinuxにMongoDBをインストール

AWSで借りたサーバーにmongoDBが入っていなかったのでインストールした手順

YUMの設定

パッケージ管理システムであるYUMにmongoDB用の設定を追加する

$ sudo vim /etc/yum.repos.d/mongodb.repo

``` bash /etc/yum.repos.d/mongodb.repo [mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=1

これでYUMにmongoDBのリポジトリが追加される

<!-- more -->

## mongoDBのインストール
今回は何も考えず最新のバージョンをインストールするので以下のコマンドで実行する
``` bash
$ sudo yum install mongodb-org
読み込んだプラグイン:priorities, update-motd, upgrade-helper
...
============================================================================================================================================================================================================
 Package                                                  アーキテクチャー                             バージョン                                       リポジトリー                                   容量
============================================================================================================================================================================================================
インストール中:
 mongodb-org                                              x86_64                                       2.6.6-1                                          mongodb                                       4.9 k
依存性関連でのインストールをします:
 mongodb-org-mongos                                       x86_64                                       2.6.6-1                                          mongodb                                       6.8 M
 mongodb-org-server                                       x86_64                                       2.6.6-1                                          mongodb                                       9.0 M
 mongodb-org-shell                                        x86_64                                       2.6.6-1                                          mongodb                                       4.3 M
 mongodb-org-tools                                        x86_64                                       2.6.6-1                                          mongodb                                        90 M

トランザクションの要約
============================================================================================================================================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 110 M
インストール容量: 277 M
Is this ok [y/d/N]: y
Downloading packages:
...
完了しました!

確認

$ mongo --version
MongoDB shell version: 2.6.6

インストール完了

参照

VimにおけるTABとスペースの扱いについて

Vimでは <TAB> やインデントについてその挙動を設定することができる。いくつか設定方法があるが、これまでこれらに関する .vimrc の設定は何も考えずにただコピペしていたので記述を見直してみた。

tabstop

tabstop<TAB> にいくつのスペースを設定するか決めることができる。

set tabstop=4

これで <TAB> に半角4つ分が設定される。

HUBOTを使ったSlack Bot作成メモ

SlackにBotを入れたいと思い、少し調べてみたところHUBOTがやはり簡単らしいのでやってみた

HUBOT用のAPI Tokenを取得する

まずはSlackのチームメニューからConfigure Integrationsを選択

{% img /images/slack_hubot/team_menu.png %}

様々な外部サービスとの連携メニューからHUBOTを選択する

{% img /images/slack_hubot/add_hubot.png %}

追加するbotの名前を入力

{% img /images/slack_hubot/set_botname.png %}

ここまでのステップを踏むとAPI Tokenが記されたページが表示される

そしてこの段階でbotがSlackにjoinする

{% img /images/slack_hubot/join_bot.png %}

MacにNode.jsとMongoDBをインストールしたメモ

某勉強会でNode.jsとMongoDBを使うということがあったので、インストールした際のメモを残しておく。

Homebrewのインストール

HUBOTを使ったirc-bot作成メモでも触れた通り、以下の方法でインストールを試みる。

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
Whoops, the Homebrew installer has moved! Please instead run:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Also, please ask wherever you got this link from to update it to the above.
Thanks!

どうやらHomebrewのインストーラーの場所があれから変わったようで、以下のパスで再度実行。

コマンドのレスポンスとして新しいパスをメッセージに残してくれるのはありがたい。

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これでHomebrewのインストールは完了したのであとはサクサク必要なものをインストールするのみ。

screenを使ってみる

デタッチ/アタッチという強力な機能をもった仮想端末管理アプリケーションであるscreenを使ってみた。

screenの設定ファイルを編集する

screenの操作に使うほとんどのコマンドはプレフィックスを用いる。 このプレフィクスがデフォルトでは ctrl + a のため、Shellの行頭移動と被ってしまうので設定を編集する。

ついでに色々編集してみた。( ctrl +^ で表す)

escape ^j^j
startup_message off
defkanji utf-8
defencoding utf-8
encoding utf-8 utf-8
caption always "%{= wb} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wk} [%l] %{=b wb}%y/%m/%d(%D) %{=b wm}%c"
autodetach on
bell_msg "^G"
defscrollback 10000
vbell off
bind n screen
bind h prev
bind j next
bind l windowlist

Ruby on Railsで初めてアプリを作ってみる #5 -controllerとviewの追加-

生成したリソースに対応するcontrollerを作成し、このリソースに対するviewとそのためのアクションを追加していく。

rails generate controller

controllerを作成する。controllerの名前は1文字目が大文字で、複数形を指定するのがrailsの規約である。

$ rails g controller Stocks
# rails generateコマンドは rails g と省略できる

このコマンドでcontrollerのファイルとviewのファイルが生成される。

Ruby on Railsで初めてアプリを作ってみる #4 -リソースの生成-

Ruby on Railsで初めてアプリを作ってみる #3 -scaffoldジェネレータ-scaffold コマンドを使ったリソースの生成を行ったが、このコマンドでは決められた形式でのリソースの生成にしか対応できないため、手動で自由にリソースを作成してみる。

rails generate model

まずはモデルを作成する。railsの規約に従って、モデルは単数系、最初の文字を大文字で始める。

$ rails generate model Stock title:string

このコマンドで generateg と省略できる。また、要素の属性はデフォルトが string なので、 string も省略することができる。

省略したコマンドが以下。

$ rails g model Stock title

このコマンドでmodelに加えてmigrateファイルが生成されるのでDBをmigrateする。

$ bundle exec rake db:migrate

Ruby on Railsで初めてアプリを作ってみる #3 -scaffoldジェネレータ-

railsには scaffold という単純なリソースを一気に生成するコマンドが存在する。 今回はこのコマンドを使ってみる。

Usersリソースの生成

今回は scaffold コマンドを使ってリソースを生成する。 ここでは以下の要素をもつUsersリソースを生成する。

  • id int
  • name string
  • email string

rails generate スクリプトに scaffold コマンドを指定し、リソースの単数系と要素の情報を渡す

$ rails generate scaffold User name:string email:string

id要素はRailsが主キーとしてデフォルトで設定する

DBにusersのセットアップを行う

rake コマンドを使ってDBをmigrate(更新)する。

$ bundle exec rake db:migrate
== 20141111170736 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0012s
== 20141111170736 CreateUsers: migrated (0.0014s) =============================

出力から users テーブルが作られたことがわかる

ブラウザで確認

rails server コマンドの短縮版である rails s を使って3000番portにアプリを立ち上げる

$ rails s

http://xx.xxx.xxx.xxx:3000

にブラウザでアクセスすると #1 railsのセットアップ で見たデフォルトのRailsページが表示される

次に以下のエンドポイントにアクセスしてみる

http://xx.xxx.xxx.xxx:3000/users

すると既にUser一覧ページができあがっているのがわかる。この他に

  • 新規ユーザーを作成するページ
  • 特定のidのユーザー情報を表示するページ
  • 特定のidのユーザー情報を編集するページ

が作られている。

Micropostsリソースの生成

Usersリソースと同様に scaffold コマンドと rakemigrate タスクで生成する

$ rails generate scaffold Micropost content:string user_id:integer
$ bundle exec rake db:migrate
== 20141112174234 CreateMicroposts: migrating =================================
-- create_table(:microposts)
   -> 0.0029s
== 20141112174234 CreateMicroposts: migrated (0.0031s) ========================

config/routes.rb にmicropostsリソースの設定が追加された

参照

Ruby on Rails チュートリアル

Ruby on Railsで初めてアプリを作ってみる #2 -Herokuのセットアップ-

Ruby on Railsのアプリケーション構築に適したPaaSであるHerokuのセットアップをする。

Herokuに必要なgemのインストール

Herokuで使用するDBであるPostgreSQLと通信するための pg とHerokuで画像やスタイルシートなどの静的アセットを提供するための rails_12factor を本番(production)環境にインストールするための内容をGemfileに追記する

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

production環境用のgemをインストールしないオプションをつけて bundle install を実行する。 これによりGemfile.lockが更新され、production環境に備えることができる。

$ bundle install --without production
Your bundle is complete!
Gems in the group production were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

ここまでできたらgitにcommitしておく。

$ git commit -a -m "Update Gemfile.lock for Heroku"

git commit-a は変更のあったファイルを自動で add するオプション。

herokuコマンドが使えるようにする

まずは以下のURLからHerokuにアカウント登録をする。

https://signup.heroku.com/identity

アカウント登録が完了したら heroku コマンドをインストールする。 今回はAWSのLinux環境へのインストールなので以下のURL( Heroku Toolbelt のStandalone)を参照して以下の手順を得る。

https://toolbelt.heroku.com/standalone

$ wget -qO- https://toolbelt.heroku.com/install.sh | sh
This script requires superuser access to install software.
You will be prompted for your password by sudo.
[sudo] password for sojiro: 
Add the Heroku CLI to your PATH using:
$ echo 'PATH="/usr/local/heroku/bin:$PATH"' >> ~/.profile
Installation complete

自動で sudo をつけて実行してくれる。インストールが完了したら出力にあるようにPATHを通す。

$ echo 'PATH="/usr/local/heroku/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$ heroku version
heroku-toolbelt/3.15.2 (x86_64-linux) ruby/2.0.0

Herokuのセットアップ

heroku コマンドがインストールされたことを確認できたらコマンドラインからHerokuの認証を行う。

$ heroku login
Enter your Heroku credentials.
Email: your.account@email.com
Password (typing will be hidden): 
Your Heroku account does not have a public ssh key uploaded.
Could not find an existing public key at ~/.ssh/id_rsa.pub
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key /home/user/.ssh/id_rsa.pub... done
Authentication successful.

認証が完了したらHerokuのセットアップをする

$ heroku create
Creating infinite-peak-4923... done, stack is cedar-14
https://infinite-peak-4923.herokuapp.com/ | git@heroku.com:infinite-peak-4923.git
Git remote heroku added

これでgitのremoteにherokuが追加される

$ git remote -v
heroku  git@heroku.com:infinite-peak-4923.git (fetch)
heroku  git@heroku.com:infinite-peak-4923.git (push)
origin  https://github.com/sojiro14/first_app.git (fetch)
origin  https://github.com/sojiro14/first_app.git (push)

Herokuへデプロイ

追加されたremoteに push をすればHerokuへのデプロイが完了

$ git push heroku master

https://infinite-peak-4923.herokuapp.com/

heroku create 時に出力された上記URL(アプリケーションごとに異なる)にアクセスするとHerokuにデプロイしたアプリケーションが確認できる。Rails 4.0ではこの時点で The page you were looking for doesn't exist. と表示されてしまう模様。

参照

Ruby on Rails チュートリアル

Ruby on Railsで初めてアプリを作ってみる #1 -railsのセットアップ-

Ruby on Railsで初めてアプリを作ってみます。 今回はRailsの立ち上がりを確認するところまで。

アプリのセットアップ(rails new)

railsのアプリ作成は rails new コマンドで始まる。

$ mkdir rails_projects
$ cd rails_projects

今回のアプリ作成の為にディレクトリを作成し、早速コマンドを実行。

$ rails new first_app
...
An error occurred while installing sqlite3 (1.3.10), and Bundler cannot continue.
...

いくつかのディレクトリやファイルが作成されるが、最後にこのようなエラーが出てbundle失敗。 そこでGemfileを編集してbundleをやり直す。

$ cd first_app/

Gemfileを編集。内容はRuby on Rails #Bundlerを参照。

$ bundle update
...
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.

    /home/sojiro/.rvm/rubies/ruby-2.0.0-p594/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
...

またも失敗。よく見るとsqlite-develが足りていないらしい

$ sudo yum install sqlite-devel

sqlite-develをインストール後再度bundleによるgemのインストールを試みる

$ bundle update
Installing sqlite3 1.3.8
Installing turbolinks 1.1.1
Installing uglifier 2.1.1
Your bundle is updated!
$ bundle install
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

インストール成功。

サーバーの立ち上げ(rails server)

ローカルでrailsを立ち上げるコマンド rails server を実行。

$ rails server
...
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
...

Node.jsのインストール

rails server コマンド実行でエラーが出てしまう。JavaScript runtimeがインストールされていないことが原因のよう。メッセージ通り https://github.com/sstephenson/execjs に行ってみるとJavaScript runtimeとしてNode.jsが有効と書いてあるのでNode.jsをインストールする。

$ sudo rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum install nodejs npm --enablerepo=epel

今回はyumでインストールした。そして再度 rails server

$ rails server
=> Booting WEBrick
=> Rails 4.0.5 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server

ローカルでサーバーが立ち上がる。 今回はAWS上で作業しているので、AWS該当インスタンスのSecurity Groupで3000番portを空ける。

http://xx.xxx.xxx.xxx:3000

にブラウザでアクセスして以下の画面が見えればOK

{% img /images/rails/rails_starting.png %}

GitHubに上げておく

$ git init
$ git remote add origin https://github.com/sojiro14/first_app.git

GitHubでリポジトリ作成

$ git add .
$ git commit -m 'Initialize repository'
$ git push -u origin master

参照