VirtualBoxにCentOS6.8の環境を構築

VirtualBox CentOS6.8の構築の手順をまとめました

1,インストール用DVDのisoファイルをダウンロード
  ■ インストール用DVDファイルは何処にあり、どれが必要か?
  http://isoredirect.centos.org/centos/6/isos/x86_64/
にある
  CentOS-6.8-x86_64-bin-DVD1.iso
が、必要。

2,VirtualBoxに、セットする
  ■ 設定方法は?
  以下の手順を参考に
  https://blog.apar.jp/linux/402/

3,インストールする
  ■ インストールの設定は?
  以下を参考に
   http://win.just4fun.biz/%E4%BB%AE%E6%83%B3%E5%8C%96%E9%96%A2%E9%80%A3%E3%82%BD%E3%83%95%E3%83%88/VirtualBox%E3%81%A7CentOS6%E3%82%92%E5%8B%95%E3%81%8B%E3%81%9D%E3%81%86.html

4,Firfoxで、外部に接続する
  ■ 外部のネットにつながらない?、Firfoxが開かない
  以下を参考に
 http://kb.seeck.jp/archives/4552

5,GuestAddtionsをインストールして、マウスの操作をスムーズにする
  ■ マウスが、HostとGestで操作がしにくい
  Gest(仮想側)から、Hostへ戻すには「右側のCTRLキー」を押すことで、切り替わる
  ただし、操作が面倒、GuestAddtionsをインストールをGest(仮想側)にインストールする
  ことで、操作性が上がります(切り替えなしで可能に)
VirtalBoxのメニューから、「デバイス」>「Guest Additionsのインストール」
仮想端末から

 
su
cd /media
ls
cd DVDメディア
./VBoxLinuxAdditions.run
yum install kernel-devel-2.6.32-504.3.3.el6.i686
yum -y install kernel-devel
yum -y install gcc
./VBoxLinuxAdditions.run

  GuestAddtionsをインストールは下記を参考に
 http://www.maruweb.jp.net/wp/?p=1916

6,VirtualBoxでOS間のクリップボードを共有する方法
  ■ Gest(仮想側)と、Hostで、クリップボードを共有に(コピペを可能に)
GuestAddtionsをインストールをした後、設定で可能に、下記を参考に
 http://pc-karuma.net/virtualbox-clipboard-share/

7,起動時の、ネットワーク(eth0)の自動接続
  ■ 起動時のeth0の接続(CentOSの設定)
  /etc/sysconfig/network-scripts/ifcfg-eth0
  の
  ONBOOT=no
  を
  ONBOOT=yes
  に、変更

  立ち上げ後
  su
  vim /etc/sysconfig/network-scripts/ifcfg-eth0
  にて、変更(編集)

以上です。

仮想環境にて、
CentOS6.8を楽しんで下さい。

CentOS6.7にpassengre+sinatra

CentOS6.7にpassengre+sinatra
を、なるべく、一括でできるようにまとめてみました

必要なアプリをインストール

yum -y install git gcc gcc-c++ libcurl-devel httpd httpd-devel openssl-devel readline-devel zlib-devel
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
mkdir ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git
rbenv install 2.2.5
rbenv shell 2.2.5
gem install bundler
cd
mkdir sina
cd sina
mkdir vendor
mkdir vendor/bundle
mkdir public
mkdir tmp
touch tmp/always_restart.txt
bundle init
echo 'gem "sinatra"' >> Gemfile
echo 'gem "passenger"' >> Gemfile
bundle install --path vendor/bundle
bundle exec passenger-install-apache2-module
・結果表示
Here's what you can expect from the installation process:
 
 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.
  :
  :
Press Enter to continue, or Ctrl-C to abort.

1を、選択
・結果表示
Use <space> to select.
If the menu doesn't display correctly, press '!'
 
 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

entrで、進んで行く
bundle exec passenger-install-apache2-module --snippet >> /etc/httpd/conf/httpd.conf
echo "DocumentRoot /root/sina/public" >> /etc/httpd/conf/httpd.conf
echo "#coding: utf-8"    >app.rb
echo "require 'sinatra'" >>app.rb
echo "get '/' do"        >>app.rb
echo "'Hello World'"     >>app.rb
echo "end"               >>app.rb
echo "require File.expand_path(File.dirname(__FILE__)) + '/app'"  >config.ru
echo "run Sinatra::Application"                                   >>config.ru
/etc/rc.d/init.d/httpd restart
getenforce
Enforcing

setenforce 0 

getenforce
Permissive
curl 'http://localhost/'
chmod o+x "/root"

curl 'http://localhost/'
Hello World

■確認
いまく、いかない時には
以下の内容を確認してください。

path

cd
cd sina
pwd

・結果表示
/root/sina

ファイルの内容1

cd
cd sina
ls
・結果表示
Gemfile  Gemfile.lock  app.rb  config.ru  public  tmp  vendor

ファイルの内容2

ls tmp
・結果表示
always_restart.txt

appの内容

cat app.rb
・結果表示
#coding: utf-8
require 'sinatra'
get '/' do
'Hello World'
end

config.ruの内容

cat config.ru
・結果表示
require File.expand_path(File.dirname(__FILE__)) + '/app'
run Sinatra::Application

httpd.confの内容

cat /etc/httpd/conf/httpd.conf
・結果表示(終わりの行)
  :
#</VirtualHost>
DocumentRoot /root/sina/public
LoadModule passenger_module /root/sina/vendor/bundle/ruby/2.2.0/gems/passenger-5.0.28/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /root/sina/vendor/bundle/ruby/2.2.0/gems/passenger-5.0.28
  PassengerDefaultRuby /root/.rbenv/versions/2.2.5/bin/ruby
</IfModule>

SELinuxの内容

getenforce
・結果表示
Permissive

/rootの権限

ls /root -l
・結果表示
drwxr-xr-x. 6 root root  4096  6月 22 09:17 2016 sina

conohaのクラウド centOS 6.7に、sinatoraをインスツール

Ubuntu16でRubyを使ってみる

を、元に、centOS 6.7にsinatraをインスツールしてみた。

■gitのインストール
gitのインストールしているか確認

git --version
・結果表示
-bash: git: コマンドが見つかりません

gitのがないのでインストール

yum -y install git

git --version
・結果表示
git version 1.7.1

■benv のインストール

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

シェルを再起動

source ~/.bashrc

インストールの確認

type rbenv
・結果表示
rbenv is a function
rbenv () 
{ 
    local command;
    command="$1";
    if [ "$#" -gt 0 ]; then
        shift;
    fi;
    case "$command" in 
        rehash | shell)
            eval "$(rbenv "sh-$command" "$@")"
        ;;
        *)
            command rbenv "$command" "$@"
        ;;
    esac
}

■ruby-build のインストール

mkdir ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

■ruby のインストール
インストール可能な、最新バージョンを確認

rbenv install -l

2.2.5をインストール

rbenv install 2.2.5

エラーになった

・結果表示
:
checking for gcc... no

gccがないので、の追加

yum -y install gcc

再度

rbenv install 2.2.5

エラーになった

・結果表示
:
Try running <code>yum install -y openssl-devel readline-devel zlib-devel</code> to fetch missing dependencies.

指示にしたが、追加

yum install -y openssl-devel readline-devel zlib-devel

再度

rbenv install 2.2.5

インストールできた

インストールした、Rubyのバージョンを確認

rbenv shell 2.2.5
ruby -v

ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-linux]

■bundler のインストール

rbenv shell 2.2.5
gem install bundler

■sinatra のインストール

プロジェクト用エリア(フォルダ:sina)を作成

cd
mkdir sina
cd sina

Gemfileを作成

bundle init

Gemfileにgem ‘sinatra’を追加

cat Gemfile
echo 'gem "sinatra"' >> Gemfile
cat Gemfile
mkdir vendor
mkdir vendor/bundle

bundle で、Gemfileを実行

bundle install --path vendor/bundle

■サンプルAPの作成
app.rbを作成

echo "#coding: utf-8"    >app.rb
echo "require 'sinatra'" >>app.rb
echo "get '/' do"        >>app.rb
echo "'Hello World'"     >>app.rb
echo "end"               >>app.rb

cat app.rb

■実行確認

bundle exec ruby app.rb

INFO  WEBrick::HTTPServer#start: pid=30947 port=4567

別の端末を開く

curl 'http://localhost:4567/'
・結果表示
Hello World

できた

■passengerで接続

■Gemでpassengerをインストール
Gemfileにgem ‘passenger’を追加

cd
cd sina

cat Gemfile
echo 'gem "passenger"' >> Gemfile
cat Gemfile

rbenv shell 2.2.5
bundle install

■passenger-install-apache2-moduleをインストール

bundle exec passenger-install-apache2-module
・結果表示
Here's what you can expect from the installation process:

 1. The Apache 2 module will be installed for you.
 2. You'll learn how to configure Apache.
 3. You'll learn how to deploy a Ruby on Rails application.
  :
  :
Press Enter to continue, or Ctrl-C to abort.

1を、選択

・結果表示
Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

entrで、進んで行く

エラーになるので、一度中断し
指摘された、不足のアプリケーションを追加

yum -y install gcc-c++ libcurl-devel httpd httpd-devel

再度

bundle exec passenger-install-apache2-module

インストールできた

apacheに設定を追加

bundle exec passenger-install-apache2-module --snippet >> /etc/httpd/conf/httpd.conf
echo "DocumentRoot /root/sina/public" >> /etc/httpd/conf/httpd.conf

アプリケーション設置用エリアを作成

mkdir /root/sina/public
mkdir /root/sina/tmp

config.ruを作成

echo "require File.expand_path(File.dirname(__FILE__)) + '/app'"  >/root/sina/config.ru
echo "run Sinatra::Application"                                   >>/root/sina/config.ru

アプリケーション修正時の自動リロードを指定

touch /root/sina/tmp/always_restart.txt

apacheの設定ファイルの整合性を確認

apachectl configtest

Syntax OKなので、起動してみる

・結果表示
httpd: apr_sockaddr_info_get() failed for 133-130-108-243
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK

apacheを起動

/etc/rc.d/init.d/httpd restart

動作を確認してみる

curl 'http://localhost/'
・結果表示
  :
<p>You don't have permission to access /
on this server.</p>
  :

権限がまずいとのこと
権限を変更

chmod o+x "/root"

再度を確認してみる

curl 'http://localhost/'
・結果表示
Hello World

うまくいった。。

Apacheー>Passengerー>Sinatra ができた。

Ubuntu16でvisualrubyをインストール

Ubuntuの環境で、GUIアプリケーションを
Rubyで開発するために
visualrubyをインストールしてみた

visualrubyは、フォームをGUIで、作成し、プログラムを開発するものです
VisualBaice,VisualStudioをイメージしてもらうといいでしょう

HP
http://visualruby.net

■ゼロベースからの手順をまとめる
1,Git のインストール
2.rbenv のインストール
3.ruby-build のインストール
4.ruby のインストール
5.bundler のインストール
6.visualruby のインストール
7.visualruby の起動、サンプル実行
8.glade のインストール
9.visualrubyからのglade起動設定
10.新規プログラム作成

1から5は
「Ubuntu16でRubyを使ってみる」

Ubuntu16でRubyを使ってみる


と、重複しますが、手順をわかりやすくするため
再度掲載しました

1.Git のインストール

sudo apt-get update
sudo apt-get install git

もし、
/var/lib/apt/lists/ をロックできません
/var/lib/apt/dpkg/ をロックできません
と、表示された場合は

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock

2.rbenv のインストール

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

シェルを再起動

source ~/.bashrc

インストールの確認

type rbenv


「rbenv は関数です」と表示されればインストール完了

3.ruby-build のインストール

mkdir ~/.rbenv/plugins

cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

4.ruby のインストール
インストール可能な、最新バージョンを確認

rbenv install -l

2.2.5をインストール

rbenv install 2.2.5

エラーになった

:
Try running `apt-get install -y libssl-dev libreadline-dev zlib1g-dev

とのことなので、

sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

の、のち、再度

rbenv install 2.2.5

を、行う

インストールされたRubyのバージョンを確認

ruby -v

5.bundler のインストール

rbenv shell 2.2.5
gem install bundler

6.visualruby のインストール

プロジェクト用エリア(フォルダ:vruby)を作成

cd
mkdir vruby
cd vruby

Gemfileを作成

bundle init

vruby/Gemfile
という、ファイルが作成される
エディタで、Gemfileを開
gem ‘visualruby’を追加
する

source "https://rubygems.org"
gem 'visualruby'

# gemを入れるディレクトリを作成

mkdir vendor
mkdir vendor/bundle

bundle で、Gemfileを実行

bundle install --path vendor/bundle

7.visualruby の起動、サンプル実行
visualrubyを起動する

cd
cd vruby
rbenv shell 2.2.5
bundle exec vr

../example/all_widgets
を選択し「open」を、押下
メニューの「Run」を、押下し
アイアらしい
新しい画面が開く事を確認する
右上の✕、押下で終了
File>Quitで終了

8.glade のインストール
フォームをデザインするツールを「glade」をインスツールする
ブラウザで、
Ubuntu、パッケージサイトを開く

http://packages.ubuntu.com/ja/precise/glade-gtk2

から、glade-gtk2をダウンロード
amd64ならば
http://packages.ubuntu.com/ja/precise/amd64/glade-gtk2/download
から、ダウンロード
端末から、ダウンロードフォルダーに移動してインストール

cd
cd ダウンロード 
sudo dpkg -i glade-gtk2_3.8.0-0ubuntu4_amd64.deb

libgladeui-1-11がないと言われるので

sudo apt install libgladeui-1-11

リストにないといわれる場合(下記エラーが表示)

   :
   :
E: パッケージ 'libgladeui-1-11' はインストール候補ではありません

/etc/apt/sources.list
に、
deb http://us.archive.ubuntu.com/ubuntu vivid main universe
を、追加する

sources.listの編集は、root権限が必要
viの使用に慣れているなら
sudo cd /etc/apt/
sudo vi sources.list
で、先頭に
deb http://us.archive.ubuntu.com/ubuntu vivid main universe
を、追加

GUIで行うなら
sudo nautilus
で、root権限でnautilusを起動し
/etc/apt/sources.list
を、選択し、geditにて、開き
deb http://us.archive.ubuntu.com/ubuntu vivid main universe
を、追加し、上書き保存し、nautilusを終了

sudo apt-get update

もし、
/var/lib/apt/lists/ をロックできません
と、表示された場合は

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock

再度、インストール

sudo apt-get update
sudo apt install libgladeui-1-11
sudo dpkg -i glade-gtk2_3.8.0-0ubuntu4_amd64.deb

にて、インストールができればOK

アプリケーション検索で
glade
を検索
Glade3インターフェース・デザイナという内容で登録されていれば
起動確認する

9.visualrubyからのglade起動設定
visualrubyを起動する

cd
cd vruby
rbenv shell 2.2.5
bundle exec vr

サンプルの
../example/listview
を選択し「Open」を、押下

Tool>GlobalSetting
を、選択
GladeCommandLine:
を、
「glade-gtk2」
を、選択し、「Try」で起動を確認
起動したgladeを、閉じ
設定画面を「Save」で終了する

左の、メニューTreeの
binの▶をクリックし展開し
gladeの▶をクリックし展開し
SongListVeiwGui.gladeをダブルクリックする
gladeが起動する
右サイドツリービューをクリックし、展開していく
Window1>hbox1>vBox1>hbox2>label1
まで、開きlabel1を選択する
プロパティのラベルを一部変更してみる

<big>ListView・・・・
→
<big>ーーーListView・・・・

保存を押して(ファイル>保存)、gladeを終了する
VisualRuby側で
「Run」
で、起動した時、デザインの修正内容が
反映していることを確認する

10.新規プログラム作成

File>NewProjet
で、新しいプロジェクトを作成する
プロジェクト名を「test001」として
「Create」を押す

「Run」により、起動を確認する
「Hello World」
のボタンを、押すと、表示が変わることを
動作を確認する

開いた画面を閉じ、プログラムを終了する

gladeの▶をクリックし展開し
デザインを変更する

ボタンを追加する

デザインを保存し終了する

MyClass.rb
を、修正し保存する

def before_show()
 @button1 = "こんにちは"
 @button2 = "世界"
end	
def button1__clicked(*args)
 @builder["button1"].label = @builder["button1"].label == "Hello World" ? "Goodbye World" : "Hello World"
 @builder["button2"].label = @builder["button1"].label == "Hello World" ? "Goodbye World" : "Hello World"
end
def button2__clicked(*args)
 @builder["button1"].label = "その1"
 @builder["button2"].label = "その2"
end

保存し、
プログラムを起動し、動作を確認する

その他

エディットボックスの場合
名前はentry番号となり
初期値は

def before_show()
 @entry1 = "こんにちは 世界1"
 @entry2 = "こんにちは 世界2"
end	

エディットボックス変更のイベントは

def entry1__changed(*args)
 @builder["entry2"].text = @builder["entry1"].text
end	

こんな感じ
上記の場合、エディットボックスの1,2の
初期値をそれぞれ、 “こんにちは 世界1”,”こんにちは 世界2”
とし、
entry1を変更すると、entry2も同じ内容になる

■注意点
1,VisualRubyとGTD+のバージョンと、gladeのバージョンの相性に注意
   → glade-gtk2_xx
2,Ubuntu16でのアプリケーションのインスツール設定
   → サードパーティがインスツールできない
3,gladeの使い勝手
   → VisualC#などのUiとは異なり、Itemドラッグ移動(微調整)はできない
     指定した箱の中に設置
     コンテナで、設置できる枠を作り、その枠の中に、コントロールを入れる

(慣れると、これも便利かも)

■参考
http://visualruby.net/index.html
https://github.com/Beagle123/visualruby

MySQLの現存するテーブルからcreate table文を起こす

既存のデータベースから、テーブルを作成するCREATE TABLE文を取得には

mysqlのコマンドの中で

SHOW CREATE TABLE テーブル名

で、できる

テーブルを追加する場合、既存のテーブルのCREATE TABLE文を取得して
それを、参考にし、新しいテーブル用のCREATE TABLE文を作ると便利である

また、データベース全体のCREATE TABLE文を取得するには
コマンドプロンプトから

mysqldump -u ユーザ名 -p --no-data データベース名

で、
パスワードを入力し、表示されます
ファイルに出力する場合には

mysqldump -u ユーザ名 -p --no-data データベース名 >dump.sql

可能です

Ubuntu16でsinatraで、削除の機能を追加

項目の削除の機能を追加する

手順は

1,削除を行う行を指定する釦を設置する
2,削除を行う処理を追加する
3,動作を確認する

となります

1,削除を行う行を指定する釦を設置する
各行に釦を設置し、行を指定するIDを埋め込む
app.rb
に、釦のフォームを設置する

<form method="post" action="del">
 <td><input type="submit" value="削除"></td>
  <input type="hidden" name="id" value="<%= us.id %>">
  <input type="hidden" name="_method" value="delete">
 </form>

get ‘/’ do
を以下にする

get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
 <form method="post" action="del">
 <td><input type="submit" value="削除"></td>
  <input type="hidden" name="id" value="<%= us.id %>">
  <input type="hidden" name="_method" value="delete">
 </form>
    </tr>
 <% end %>
<form method="post" action="new">
 <tr>
  <td><input type="submit" value="登録"></td>
  <td><input type="text" name="username"></td>
  <td><input type="text" name="mailaddres"></td>
 </tr>
</form>
</table>
</body>
</html>
}
end

で、起動し削除釦を押してみる

cd
cd sina
rbenv shell 2.2.5
bundle exec ruby app.rb

ブラウザ(Firfox)から
http://localhost:4567/

エラーとして

Try this:
delete '/del' do
  "Hello World"
end

と、表示される
delete ‘/del’ do
を追加する
2,削除を行う処理を追加する

delete '/del' do
  usrs = User.find(params[:id])
  usrs.destroy
  redirect '/'
end

修正内容を追加すると

#coding: utf-8
 
require 'active_record'
require 'mysql2'
require 'sinatra'
require 'sinatra/reloader'
 
# Import files for database
ActiveRecord::Base.configurations = YAML.load_file('database.yml')
ActiveRecord::Base.establish_connection(:development)
 
class User < ActiveRecord::Base
end
 
get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
      <form method="post" action="del">
      <td><input type="submit" value="削除"></td>
       <input type="hidden" name="id" value="<%= us.id %>">
       <input type="hidden" name="_method" value="delete">
       </form>
    </tr>    
</tr>
    <% end %>
<form method="post" action="new">
 <tr>
  <td></td>
  <td><input type="text" name="username"></td>
  <td><input type="text" name="mailaddres"></td>
  <td><input type="submit" value="登録"></td>
 </tr>
</form>
</table>
</body>
</html>
}
end

post '/new' do
  usr = User.new
  usr.username = params[:username]
  usr.mailaddres = params[:mailaddres]
  usr.save
  redirect '/'
end

delete '/del' do
  usrs = User.find(params[:id])
  usrs.destroy
  redirect '/'
end

となりる

3,動作を確認する
app.rbを起動し

cd
cd sina
rbenv shell 2.2.5
bundle exec ruby app.rb

ブラウザ(Firfox)から
http://localhost:4567/
により、削除釦を押してみる

対象項目の削除ができた

参考
・Sinatra+ActiveRecord+SQLite3で,軽量なWeb-DB連携例

Ubuntu16でsinatraで、追加の機能を追加

前回のプログラムに

追加の機能を追加する
手順は

1,自動リロードの追加
2,追加項目入力用フォームの追加
3,テータ追加処理の追加
となりる

1,自動リロードの追加
開発効率向上のために自動リロードの追加する

sinatra-contrib
の追加(インストール)と

app.rbへの

require 'sinatra/reloader'

の追加となる

sina/Gemfile

gem 'sinatra-contrib'

を追加し
bundleにて、インストール

cd
cd sina
rbenv shell 2.2.5
bundle install --path vendor/bundle

app.rbを修正

require 'sinatra/reloader'

を追加

実行
bundle exec ruby app.rb
ブラウザ(Firfox)から
http://localhost:4567/

ブラウザ、起動後
app.rb
を修正し、ブラウザ、再表示で、変更されることを確認

2,追加項目入力用フォームの追加
追加のフォームを追加する


追加したものは

#coding: utf-8
 
require 'active_record'
require 'mysql2'
require 'sinatra'
require 'sinatra/reloader'
 
# Import files for database
ActiveRecord::Base.configurations = YAML.load_file('database.yml')
ActiveRecord::Base.establish_connection(:development)
 
class User < ActiveRecord::Base
end
 
get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
    </tr>
    <% end %>
<form method="post" action="new">
 <tr>
  <td><input type="submit" value="登録"></td>
  <td><input type="text" name="username"></td>
  <td><input type="text" name="mailaddres"></td>
 </tr>
</form>
</table>
</body>
</html>
}
end

再表示して、変更を確認する

登録ボタンを押して見る

エラー画面になる
データの追加処理
post ‘/new’
を、追加する

3,テータ追加処理の追加
app.rb
に、

post '/new' do
  usr = User.new
  usr.username = params[:username]
  usr.mailaddres = params[:mailaddres]
  usr.save
  redirect '/'
end

を追加

行が追加されることを確認してみる

Mysql2::Error: Field 'created_at' doesn't have a default value: INSERT INTO <code>users</code> (<code>username</code>, <code>mailaddres</code>, <code>updated_at</code>) VALUES ('kon', 'kon@xxx.com', '2016-05-09 05:11:22')

エラーになる
updated_atは作ってくれるが
created_atは作ってくれないようである

DB側で、自動で、作成するように変更

ALTER TABLE users CHANGE created_at created_at datetime NOT NULL default current_timestamp;

mysqlのバージョンによる依存性の可能性があるため、確認

mysql --version
mysql  Ver 14.14 Distrib 5.7.12, for Linux (x86_64) using  EditLine wrapper

5.7.12
の場合、うまく行った

参考
・【Ruby】Sinatraで、速攻でWebサイトを公開するための環境構築
・Sinatra+ActiveRecord+SQLite3で,軽量なWeb-DB連携例
・MySQL5.6で作成日時と更新日時を自動で設定してみるAdd Star

Ubuntu16でsinatraとactiverecordとMysqlを使ってみる

前回、Ubuntu16に、sinatraをインストールしたので
Mysqlを組み込んでみる

手順は以下となる
1,Mysql のインストール
2.操作用アカウントの作成
3.操作用テーブルの作成
4.操作用項目の作成
5.Mysql2とactiverecodのインストール
6.databese.ymlを作成
7.app.rbを修正
8.起動し動作確認

となります

1,Mysql のインストール

sudo apt-get install mysql-server

途中で、rootのパスワード名を聞かれるので
パスワードを入力し、TABで「了解」まで移動し、スペースで先へ進む(2回入力)

インストール確認

mysql --version

mysql Ver 14.14 Distrib 5.7.12, for Linux (x86_64) using EditLine wrapper

でした。

2.操作用アカウントの作成

ユーザ:user01
pass:pass01
で、作成する

GRANT ALL PRIVILEGES ON *.* TO (ユーザ名)@localhost IDENTIFIED BY ‘(パスワード)’ WITH GRANT OPTION;
なので、以下にて作成
まず、先ほど、インストールの時に設定したパスワードにて
rootでログインする

mysql -u root -p

rootのパスワードを入力

GRANT ALL PRIVILEGES ON *.* TO user01@localhost IDENTIFIED BY 'pass01' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

ログインできるか確認する

mysql -u user01 -p

新しいアカウントのパスワードpass01で確認
ログインできらた

exit;

で、終了

3.操作用テーブルの作成

データベース名
sinatra

テーブル名
users

項目名
username(名前)
mailaddres(メールアドレス)

を作成する

作業用アカウントでログイン

mysql -u user01 -p

データベースを作成

CREATE DATABASE sinatra;

データベースの確認

show databases;

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sinatra |
| sys |
+——————–+
5 rows in set (0.01 sec)

データベースの選択

use sinatra;

テーブルの作成

CREATE TABLE <code>users</code> (
  <code>id</code> int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  <code>username</code> varchar(255) NOT NULL,
  <code>mailaddres</code> varchar(255) NOT NULL,
  <code>created_at</code> datetime NOT NULL,
  <code>updated_at</code> datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

テーブルの確認

desc users;

mysql> desc users;
+————-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | NO | | NULL | |
| mailaddres | varchar(255) | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+————-+————–+——+—–+———+—————-+
5 rows in set (0.01 sec)

4.操作用項目の作成
確認用のデータを作成する
名前: アドレス
‘tanaka’,’t01@gmail.com’
‘satou’,’s01@gmail.com’
‘yamada’,’y01@gmail.com’
の3つの項目を追加してみる

insert into users (id, username, mailaddres,created_at,updated_at) values(1,'tanaka','t01@gmail.com',now(),now());
insert into users (id, username, mailaddres,created_at,updated_at) values(2,'satou','s01@gmail.com',now(),now());
insert into users (id, username, mailaddres,created_at,updated_at) values(3,'yamada','y01@gmail.com',now(),now());

入力したデータを確認する

select id, username, mailaddres from users;

mysql> select id, username, mailaddres from users;
+—-+———-+—————+
| id | username | mailaddres |
+—-+———-+—————+
| 1 | tanaka | t01@gmail.com |
| 2 | satou | s01@gmail.com |
| 3 | yamada | y01@gmail.com |
+—-+———-+—————+
3 rows in set (0.00 sec)

exit;

5.mysql2とactiverecodをインストールする
前回作成した
sina/Gemfile
gem “activerecord”
gem “mysql2”
を追加する
viまたは、gedit
にて修正する

cd
cd sina
vi Gemfile

以下となる

# frozen_string_literal: true
# A sample Gemfile
source "https://rubygems.org"

# gem "rails"
gem 'sinatra'
gem "activerecord"
gem "mysql2"

bundleにて、
“activerecord”
“mysql2”
を、
インストール

cd
cd sina
bundle install --path vendor/bundle

エラーが出たので

rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.2.5

指定し

rbenv shell 2.2.5

再度

cd
cd sina
bundle install --path vendor/bundle

bundleは起動できたが、エラーが出た
下記メッセージに従い

:
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
:

libmysqlclient-devをインストール

sudo apt-get install libmysqlclient-dev

再度

bundle install --path vendor/bundle

6.databese.ymlを作成

touch database.yml

geditなどでデータ追加

development:
  adapter: mysql2
  database: sinatra
  host: localhost
  username: user01
  password: pass01
  encoding: utf8

7.app.rbを修正

#coding: utf-8

require 'active_record'
require 'mysql2'
require 'sinatra'

# Import files for database
ActiveRecord::Base.configurations = YAML.load_file('database.yml')
ActiveRecord::Base.establish_connection(:development)

class User < ActiveRecord::Base
end

get '/' do
@usrs = User.all
erb %{
<html>
<head>
  <meta charset="utf-8" />
  <title>Test</title>
</head>
<body>
  <table border>
    <tr>
      <th>名前</th>
      <th>メールアドレス</th>
    </tr>
    <% @usrs.each do |us| %>
    <tr>
      <td><%= us.id %></td>
      <td><%= us.username %></td>
      <td><%= us.mailaddres %></td>
    </tr>
    <% end %>
</table>
</body>
</html>
}
end

8.起動し動作確認
実行

bundle exec ruby app.rb

ブラウザ(Firfox)から

http://localhost:4567/

へアクセスし、
名前の一覧がでれば完了です

参考:
・UbuntuにMySQLをインストールするところからテーブル作成までの方法
・Sinatra+MySQL+ActiveRecordでDatabaseの設定を行う
・Sinatra+ActiveRecord+SQLite3で,軽量なWeb-DB連携例
・小規模Webアプリのためのフレームワーク,Sinatra

Ubuntu16でRubyを使ってみる

せっかくの新しい、Ubuntu16の環境なので
Rubyの勉強に使ってみる
VirtualBoxで作成した環境に、
Rubyをインストールし
Webサービス(Sinatra,Rails)を試してみる

手順は以下
1,Git のインストール
2.rbenv のインストール
3.ruby-build のインストール
4.ruby のインストール
5.bundler のインストール
6.sinatra のインストール
7.サンプルAPの作成
8.実行確認
となります

1.Git のインストール

sudo apt-get update
sudo apt-get install git

2.rbenv のインストール

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc

シェルを再起動

source ~/.bashrc

インストールの確認

type rbenv


「rbenv は関数です」と表示されればインストール完了

3.ruby-build のインストール

mkdir ~/.rbenv/plugins

cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

4.ruby のインストール
インストール可能な、最新バージョンを確認

rbenv install -l

2.2.5をインストール

rbenv install 2.2.5

エラーになった

:
Try running <code>apt-get install -y libssl-dev libreadline-dev zlib1g-dev

とのことなので、

sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

の、のち、再度

rbenv install 2.2.5

を、行う

インストールされたRubyのバージョンを確認

ruby -v

5.bundler のインストール

gem install bundler

エラーになったので

gem install bundler
rbenv: gem: command not found

The </code>gem' command exists in these Ruby versions:
  2.2.5

設定後

rbenv shell 2.2.5

再度

gem install bundler

6.sinatra のインストール

プロジェクト用エリア(フォルダ:sina)を作成

cd
mkdir sina
cd sina

Gemfileを作成

bundle init

Gemfileにgem ‘sinatra’を追加

source "https://rubygems.org"
gem 'sinatra'

# gemを入れるディレクトリを作成

mkdir vendor
mkdir vendor/bundle

bundle で、Gemfileを実行

bundle install --path vendor/bundle

7.サンプルAPの作成
app.rbを作成

#coding: utf-8
require 'sinatra'
get '/' do
"Hello World"
end

8.実行確認
実行

bundle exec ruby app.rb

ブラウザ(Firfox)から
http://localhost:4567/
へアクセスし、
Hello World
と表示されば、完了です

下記のページを参考にしました
・Ruby on Rails 4.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました

・Ubuntu:Ruby と Ruby on Rails のインストール手順

・【Ruby】Sinatraで、速攻でWebサイトを公開するための環境構築

・Ubuntu、Sinatra、インストール方法、ベンチマーク

Ubutu14で、Ubuntu16の環境を作る

Ubuntu16を試してみるために
Ubuntu14の環境でVirtualBoxで動作確認をしてみる

まず、Ubuntu14にVirtualBoxをインストールする

を参考にし、
https://www.virtualbox.org/wiki/Linux_Downloads
から、ダウンロードをする
Ubuntu 14.04 (“Trusty”) / 14.10 (“Utopic”) / 15.04 (“Vivid”) i386 | AMD64

インスツールするOSが、i386 | AMD64
か調べる必要がある

を、参考に
# uname -a
で、調べると、
Linux ubuntu 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
自分のOSはx86_64
なので、64Bit AMD64をダウンロード

VirtualBox 5.0.20 for Linux
(2016/5/8)バージョンは5.0.20のようです
ダウンロードした
virtualbox-5.0_5.0.20-106931-Ubuntu-trusty_amd64.deb
を、ダブルクリックでインストール完了

次に、Ubuntu16のディスクイメージをダウンロード
https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix

ubuntu-ja-16.04-desktop-amd64.iso(ISOイメージ) (md5sum: 76a02f16f56c01f96aeda325914432fd)
から、ダウンロード

VirtalBoxの新規作成か
名前をUbuntu16
タイプ:Linux
バージョン:Ubuntu(64Bit)
次へ
メモリを設定(5120)
次へ
仮想ハードディスを作成する
VDIを選択
次へ
可変サイズ
次へ
20G
作成

設定にて
ストレージ
コントローラを選択
左を選択し
ダウンロードした(ISOイメージ)を選択

起動を選択する
日本語が選択していることを確認し
Ubuntu16インストールを選択

2つのチェックを入れる
続ける
インストールを押す

Tokyで
続ける
キーボード
日本語で
続ける

インストールが完了しました
がでたら、今すぐ起動を押す
電源をオフにして
再度起動する

Ubuntu16が起動できる

tirm
gedit
を、サイドメニューに追加

virtualbox コピー ペーストできるようにする

VirtualBoxでOS間のクリップボードを共有する方法

設定から
一般>高度>
 クリップボードの共有>双方向

再起動したがうまく行かない

http://vboxmania.net/content/%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%85%B1%E6%9C%89%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%A7%E3%81%99

>Guet Additions にて追加される機能です
Guet Additionsをインストールしないと行けない

VBoxGuestAdditions.isoが、入っているか探してみる
sudo find / -name VBoxGuestAdditions.iso

/usr/share/virtualbox/VBoxGuestAdditions.iso
にあった

設定で、VBoxGuestAdditions.isoをCDに追加して
起動するが、CDで起動していまいうまくいかない
起動の順番を
設定>システムにより
HDDからDVDの順番にする

再度、起動した後の

Terminal
から
cd /media/ubuntu/VBOXADDITIONS_5.0.20_106931/
sudo /bin/sh VBoxLinuxAdditions.run
にて、VBoxLinuxAdditionsをゲスト側にインストール

インストール後
一度、仮想を終了し、再度起動すると

ホストからゲストへのコピペができた