おっさんエンジニアの忘備録

Linux系の各種作業を自分用の忘備録として残しています

【Ruby】IO・File

このあたりはいろいろ使いそうなので。。。。

◆jleague.txt

鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

 

こちらのファイルを使います。

 

(1)IO#readを使うパターン

①ソース(file_read.rb)

File.open 'jleague.txt' do |file|
    puts file.read
end

 

②実行結果

# ruby file_read.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

ファイルの内容をすべて読み込んで一気に出力するパターンです。

あんまり実務では使わなさそう。。。。

 

 

(2)IO#getsを使うパターン

①ソース(file_gets.rb)

File.open 'jleague.txt' do |f|
    while line = f.gets
        puts line
    end
end

 

②実行結果

# ruby file_gets.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

こっちは1行ずつ読み込んで出力するパターンです。

こっちのほうが使いそうですね。

 

 

(3)IO#each_lineを使うパターン

①ソース(file_eatch_line.rb)

File.open 'jleague.txt' do |f|
    f.each_line do |line|
        puts line
    end
end

 

②実行結果

# ruby file_gets.rb
鹿島アントラーズ
浦和レッズ
ガンバ大阪
川崎フロンターレ
アルビレックス新潟
清水エスパルス
横浜・Fマリノス
サガン鳥栖
ベガルタ仙台

IO#getsと同じ感じですね。

IO#getsとIO#each_lineだとどっちを使ったほうがいいのだろう??

【Ruby】モジュール

モジュールに関してはまだ完全に理解できてない感じです。。。。^^;

 

module Walkable
    def walk
    puts "歩く"
    end
end

class Cat
    include Walkable
end

class Dog
    include Walkable
end

Cat.new.walk                ⇒「歩く」と表示
Dog.new.walk               ⇒「歩く」と表示

こんな感じでincludeさせることによってクラスのインスタントメゾットして使うことができます。

勉強中なのでまた追記します。。。。

【Ruby】クラス

基本的な書き方はこんな感じ

class MyClass
HOGE = 100
end

puts MyClass::HOGE                   ⇒「hoge」と表示

 

(1)クラスの初期化

initializeメゾットを利用します

class MyClass
    def initialize
        puts 'Initialize'
    end
end

obj = MyClass.new                   ⇒「Initialize」と表示

これはオブジェクト指向をかじっていればおなじみのって感じですかね

 

(2)インスタンスメゾット

class MyClass
    attr_accessor :number                  インスタンス変数を操作するために「attr_accessor」を定義

    def hoge
        puts "hoge"
    end
end

 

obj = MyClass.new
puts obj.hoge                         ⇒「hoge」と表示
obj.number = 100
puts obj.number                     ⇒「100」と表示

attr_accessorのようなものはPerlPHPにはなかった(ような気がするので)のでちょっと慣れない感じです。。。 

 

(3)クラスメゾット

class MyClass
    def self.hoge
        puts "hoge"
    end
end
MyClass.hoge            ⇒「hoge」と表示

クラスメゾットの場合は「self.[メゾット名]」になるみたいです。

素朴な疑問でこれを使うケースってどんなケースなんだろう??

インスタンスメゾットでやってしまってもいいような気も。。。。

 

こんな書き方もできるみたいです。

class MyClass
    class << self
        def hoge
            puts "hoge"
        end
    end
end
MyClass.hoge             ⇒「hoge」と表示

この書き方は特異クラスと言うみたいで、クラスメゾットをまとめて書けて、ネストすることでインスタンスメゾットとの区別がしやすいというメリットがあるらしいです。

ただ自分はまだこの書き方のメリットが理解できてません(笑)

 

 (4)クラスの継承

class Car
    def put_class
        puts 'Car'
    end
end

class WagonR < Car
end

puts WagonR.superclass            ⇒「Car」と表示
obj = WagonR.new
obj.put_class                               ⇒「Car」と表示

 「class SubClass < SuperClass」とすればよいみたいです

【Ruby】変数、定数

Ruby勉強中なのでいろいろまとめていこうと思ってます。

 

(1)ローカル変数

ローカルなスコープでのみ有効な関数です。

小文字またはアンダーバーで始める変数です。

hoge = 'saosao'

def display_saosao
    puts hoge                ⇒「undefined local variable or method」でエラー

end

puts hoge                  ⇒「saosao」と表示される

display_saosao

  

(2)インスタンス変数

インスタンスの中だけで参照できる変数をインスタンス変数と言います。「@」から始まる変数です。

class MyClass
    def setName(str)
        @name = str
    end

  def getName()
      return @name
  end
end

obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Saosao1")
obj2.setName("Saosao2")
puts obj1.getName()              ⇒「saosao1」と表示される
puts obj2.getName()              ⇒「saosao2」と表示される

 

インスタンス変数を外部からアクセスできるようにするにはattr_accessorを利用します。

class MyClass
    attr_accessor :hoge
end

obj = MyClass.new()
obj.hoge = 'saosao'
puts obj.hoge                     ⇒「saosao」と表示される

 

PerlPHPオブジェクト指向のプログラムは組んでいたのですが、attr_accessorのような記述はなかったので、理解しにくい。。。。^^;

 

(3)クラス変数

同じクラスの全てのインスタンスで一意となる変数です。「@@」から始まる変数です。

class MyClass
    def setName(str)
        @@name = str
    end

    def getName()
        return @@name
    end

end

obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Saosao")
puts obj1.getName()                   ⇒「Saosao」と表示
puts obj2.getName()                   ⇒「Saosao」と表示

 

 (4)グローバル変数

どこからでも参照・変更できる変数です。「$」から始まる変数です。

$hoge = 'saosao'

def display_saosao
    puts $hoge                            ⇒「saosao」と表示
end

display_saosao

 あまり使うことはないですかね。。。。

 

(5)定数

変化しない値です。大文字アルファベットで始まる必要があります。

HOGE = 'saosao'

puts HOGE                     ⇒「saosao」と表示

 

Ruby関連リンク集

(1)本家サイト

オブジェクト指向スクリプト言語 Ruby

 

(2)コーディング規約

Rubyコーディング規約

 

(3)日本Rubyの会

一般社団法人 日本Rubyの会

 

(4)Rubyアソシエーション

www.ruby.or.jp

 (5)Rubyで%技法

qiita.com

 (6)Ruby入門

www.rubylife.jp

 (7)Rubyでサーバ監視スクリプト

inokara.hateblo.jp

 (8)Rubyでメールを送る

qiita.com

(9)SNMPライブラリ

SNMP Library for Ruby

 

(10)Rubyでファイル監視

Rubyのfssmでフォルダを監視してファイルの新規作成、更新、削除をトリガとして特定の処理を実行するコード

 

(11)逆引きRuby

逆引きRuby - 逆引きRuby

 

(12)Ruby/MySQL

Ruby/MySQL

vagrant+Ruby on rails環境でブラウザからアクセスする

これすっごくハマりました^^;

 

ググっていろいろ探してみたらこちらのサイトが!!

Vagrant で Ruby on Rails 4 の環境構築 - Qiita

 

こちらを参考にやってみる。

 

(1)Vagrantfile修正

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3000, host: 3000

Railsで使用するポートをフォワードさせてあげる設定を追加 

 

(2)Vagrant再起動

> vagrant reload

 

(3)Railsを起動

# rails server -b 0.0.0.0
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options

=> Ctrl-C to shutdown server
[2016-04-17 07:10:40] INFO WEBrick 1.3.1
[2016-04-17 07:10:40] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-04-17 07:10:40] INFO WEBrick::HTTPServer#start: pid=2436 port=3000

⇒ここがポイントです!!

どうやら Rails 4.2からデフォルトのホストが0.0.0.0からlocalhostに変更されたみたいです。

 

(4)ブラウザでhttp://localhost:3000にアクセス

f:id:saosao_0706:20160417151552p:plain


⇒うまくいきました!!!

 

マニュアルをちゃんと読めってことですね。。。。。^^;

CentOS6.7にRuby on railsをインストール

【前提条件】

◆git、rbenv、ruby-build、ruby(2.3.0)がインストールされている

 ⇒Railsのインストール方法はこちらで大丈夫でした

sqlitesqlite-develがインストールされている

 

(1)gemでsqlite3インストール

# gem install sqlite3

 

 

(2)railsインストール

# gem install rails

 

(3)バージョン確認

# rails -v

Rails 4.2.6

 

(4)とりあえず動かしてみる

# rails new app
# cd app
# rails server
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-16 16:40:04] INFO WEBrick 1.3.1
[2016-04-16 16:40:04] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-04-16 16:40:04] INFO WEBrick::HTTPServer#start: pid=14189 port=3000

⇒立ち上がったっぽいです

(5)実際にアクセスしてみる

# curl http://localhost:3000
<!DOCTYPE html>
<html>
<head>
<title>Ruby on Rails: Welcome aboard</title>

⇒とりあえず大丈夫っぽいです

 

Vagrantの環境で画面を確認するのはどうしたらいいのだろう。。。