2013年11月19日火曜日

Git入門 レベル1ヘ(^o^)ノ

Gitを再認識する為に始めました

まずはレベル1から

Gitはバージョン管理システムです

現場ではSubversionを使っていますが…(;・∀・)

自分のお仕事ではGitを使っています。

ぶっちゃけ一人開発なので、Subversionでもよいのですがwww

SubversionとGitとどう違うのでしょうか?

Subversionは集中型バージョン管理システムです。

一方、Gitは分散型バージョン管理システムです。

現場ではSubversionでコミットするとJenkinsが動きます

Subversionでのcommit = 納品という認識です

しかし!うっかりcommitが頻繁に発生します(Subversionのせいではないw

んじゃ、ブランチきればいいじゃーんヘ(^o^)ノ

Subversionは集中型バージョン管理システムです…

ブランチをきるさきはローカルではなくネットワーク先になります

この時点で僕はムリですが…

Subversionをあまり理解していませんので、つっこみ大歓迎です

Gitは分散型なので、ローカルにブランチを切り放題のやっぱやーめたやり放題w

RubyはSubversionで管理されていますが、mrubyはGitで管理されGitHubにて公開されています

GitHubの登場がGitの地位をここまで押し上げたと言っても良いでしょう(ほんまかいなw

そのうち、GitHubについてもブログ書きますよ( ー`дー´)キリッ

MacならGitはデフォルトでインストールされています(10.9以降

10.8以前のバージョンではXcodeのcommand line tool?をインストールすればよろし

今回は基本的なコマンドをご紹介

$ mkdir murajun1978

$ cd murajun1978

$ git init

$ ls -a
.    ..   .git

git initでローカルにリポジトリを作成しています

.gitがリポジトリ

試しにファイルを作成してみましょ

$ echo 'Hello, Git!' >> hello.txt

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
# hello.txt

Untracked filesはgitで管理されてないよーってこと(ワーキングツリー

$ git add hello.txt

$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached ..." to unstage)
#
# new file:   hello.txt

git addしたことでGitの管理下に(ステージへ移動

$ git commit -m "init commit"

$ git status
# On branch master
nothing to commit, working directory clean

git commitしたことでステージからいなくなった(リポジトリへ移動

$ git log
commit [ハッシュ]

Subversionではコミット番号で管理してるけど、Gitは分散型なので一意な文字列ハッシュを使って管理してるのね

$ git show HEAD
Date:   Tue Nov 19 00:24:21 2013 +0900

    init commit

diff --git a/hello.txt b/hello.txt
new file mode 100644
index 0000000..670a245
--- /dev/null
+++ b/hello.txt
@@ -0,0 +1 @@
+Hello, Git!

git showでリポジトリの状態を見ることができる

$ echo 'Lets try Git' >> hello.txt

$ git status 
# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
# modified:   hello.txt
#

$ git diff
diff --git a/hello.txt b/hello.txt
index 670a245..edaa8ae 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1,2 @@
 Hello, Git!
+Lets try Git

git diffで変更内容を見ることができます

間違えたのでこの修正を取り消してみましょう

$ git checkout -- hello.txt

$ git status
# On branch master
nothing to commit, working directory clean

もとに戻りましたねー

また書きます

( ̄(エ) ̄)彡☆

2013年11月17日日曜日

Shinosaka.rb キックオフヘ(^o^)ノ

本日、Shinosaka.rbのキックオフを勝手にやりましたw

次回からオープンコミュニティとして運営していくよー

会場も決まっているので、Doorkeeperでイベントたてまするヘ(^o^)ノ

【決まったこと】
メンバーの連絡はyouroomをする
募集はDoorkeeperを利用する
メンバーの困りごとをみんなで解決する
GitHubを使ったソーシャルコーディングを実践する

セッションも少しやりました。

【セッション】
Shinosaka.rb


Ruby × gnuplot


やはり会場探しが一番難しいですね…

会場提供して頂ける場合は@murajun1978までご連絡をm(_ _)m

ステマは全力でさせて頂きますwww

まだ、できたてホヤホヤのコミュニティですが、温かい目で見守ってやってください。

関西圏のRubyコミュニティとも連携していきたいですね

わくわく( ^ω^)

( ̄(エ) ̄)彡☆

2013年11月16日土曜日

GitHub PagesでSassがCSSにコンパイルされなかった…(;・∀・)

前回の「JekyllでHamlとSassとCoffeescriptを使ってみたヘ(^o^)ノ

うまくできなかったから調べた

現象SassがCSSにコンパイルされない…

ローカルでは動いてたけどね(;・∀・)

参考サイト
  ⇒Setting up Jekyll, Compass, and Github Pages
  ⇒Use Jekyll, SCSS, and CoffeeScript without plugins

Rakefileに書くのが手っ取り早いな

( ̄(エ) ̄)彡☆

2013年11月14日木曜日

Paperclipを使ってみたよヘ(^o^)ノ

仕事でファイルを扱うプロジェクトがあり、Paperclipというgemを使ってみた

ブラウザからはサンプルを見ればすぐに理解できる

では、ファイルからPaperclipを使って登録するにはどうすれば良いのか?

やってみたヘ(^o^)ノ

ActionDispatch::Http::UploadedFileを使えば良いのだー

サンプルソースはGitHub⇒paperclip_sample

めっちゃ簡単w

Paperclip便利だー

( ̄(エ) ̄)彡☆

2013年11月3日日曜日

JekyllでHamlとSassとCoffeescriptを使ってみたヘ(^o^)ノ

Shinosaka.rb

コミュニティサイトはGitHub Pagesを使うことにしました

なぜGitHub Pages?

メンバーがGitHub Pageを利用することで、Gitの操作やGitHubの使い方を実践できる

どうせならサイトを運用しならSassやCoffeeScriptのスキルも身につけたいなー(個人的にw

なので、JekyllでSassとCoffeeScriptを使う方法を調べてみました

JekyllでSassを使う


Gemfile
source 'https://rubygems.org'

gem 'jekyll'
gem 'jekyll-sass'

_plugins/bundler.rb
require "rubygems"
require "bundler/setup"
Bundler.require(:default)

_config.yml
sass:
  syntax: scss
  style: compact

css/main.css ⇒ css/main.scss

動作確認…

動いたヘ(^o^)ノ

JekyllでHamlを使う


Gemfile
gem 'jekyll-haml'

_incloudes/test.haml
%h1 Welcome to Shinosaka.rb

index.md
{% haml test.haml %}

動作確認…

動いたヘ(^o^)ノ

JekyllでCoffeeScriptを使う


Gemfile
gem 'coffee-script'

_plugins/coffeescript_converter.rb
module Jekyll
  require 'coffee-script'
  class CoffeeScriptConverter < Converter
    safe true
    priority :normal
 
    def matches(ext)
      ext =~ /coffee/i
    end
 
    def output_ext(ext)
      ".js"
    end
 
    def convert(content)
      begin
        CoffeeScript.compile content
      rescue StandardError => e
        puts "CoffeeScript error:" + e.message
      end
    end
  end
end

javascript/test.coffee
---
---
alert "Hello CoffeeScript!"

_layouts/default.html
script src="javascript/test.js"

動作確認…

ちゃんとjsファイルに変換されてるヘ(^o^)ノ

これでGitHub + Git + Jekyll + Haml + Sass + Coffeescriptの環境ができました

( ̄(エ) ̄)彡☆

2013年10月17日木曜日

Rails4の新規プロジェクトが開発フェーズに突入したよヘ(^o^)ノ

最近、アジャイル本を読みあさって現場に落とし込めればと猛勉強中ヘ(^o^)ノ

タイトルからアジャイルらしさが見受けられませんが…Σ(゚д゚lll)

設計フェーズも終わり、開発フェーズに突入しました(現場w)

開発チームのルールはTDD、ペアプロ、RSpecによる単体テスト&Capybaraでの結合テスト

ビルドを壊したらスタバのコーヒーをメンバーにごちそうなど

さっそく、本日ビルドを壊してしまいました(;・∀・)

言い訳

  1. svnよくわからない
  2. commit ⇒ Jenkins (実は今日のコミットもミスが原因


普段はGitを使ってる

  1. ローカルにブランチキリ放題ヘ(^o^)ノ
  2. branch ⇒ commit ⇒ merge ⇒ push ⇒ Jenkins

さて、検証機のセッティングに2日弱かかりました(お疲れ様でした!

KVMなので本気でVagrant + Chefを考えます

RSpecの設定

これも自動化しよう…

今回のプロジェクトではCapybaraの結合テストがあるのでViewとControllerの単体テストは行いません( ー`дー´)キリッ

config/application.rb
config.generators do |g|
  g.test_framework :rspec,
    routing_specs: false,
    controller_specs: false,
    view_specs: false
end

Gemfile
group :development, :test do 
  gem 'rb-fsevent'
  gem 'terminal-notifier-guard'
  gem 'guard-rspec'
  gem 'guard-spring'
  gem 'rspec-rails'
  gem 'factory_girl_rails'
end

group :test do 
  gem 'turnip'
  gem 'capybara'
  gem 'launchy'
  gem 'poltergeist'
end

Guardfile
guard :rspec, cmd: 'spring rspec --color --format d' do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }

  # Rails example
  watch(%r{^app/(.+)\.rb$})                           { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$})          { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
  watch(%r{^app/controllers/(.+)_(controller)\.rb$})  { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
  watch(%r{^spec/support/(.+)\.rb$})                  { "spec" }
  watch('config/routes.rb')                           { "spec/routing" }
  watch('app/controllers/application_controller.rb')  { "spec/controllers" }
end

spec/spec_helper.rb
config.include FactoryGirl::Syntax::Methods
config.before(:all) do
  FactoryGirl.reload
end


開発中の技術的なとこはできる範囲で書いていくヘ(^o^)ノ

Minamisenba.rbのGithubグループ作った(まだなにもない

https://github.com/minamisenbarb

ホームページとかイベント告知とかやっていきます。

よろしくお願いします( ̄(エ) ̄)彡☆

2013年10月8日火曜日

社内LT大会を開催したよヘ(^o^)ノ

お久しぶりの更新です(;・∀・)

先日、社内でLT大会を開催しましたヘ(^o^)ノ

言い出しっぺではないのですが。。。

楽しかった!!!

社内LTを進める理由

  • 楽しいヘ(^o^)ノ
  • 楽しいワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ
  • 楽しい(・∀・)
  • etc
僕のLTはこんな内容でしたー


みんな開発環境の構築はめんどくさい

なら自動化すればいいじゃんヘ(^o^)ノ

みたいなー

10分くらい話してしまった…(;・∀・)

全員分はアップできませんが、許可を頂いた有志のスライドはこちら





次回開催も決定していますヘ(^o^)ノ

( ̄(エ) ̄)彡☆