Deprecated: Function split() is deprecated in /home/users/1/fool.jp-ichi/web/blog/wp-content/plugins/modPukiWiki/lib/func.php on line 75
Deprecated: Function ereg() is deprecated in /home/users/1/fool.jp-ichi/web/blog/wp-content/plugins/modPukiWiki/plugin/ref.inc.php on line 207
まずはbundle installまで
プロジェクトのdirを適当につくってGemfileを作成。あとgit initもしとこう。
$ mkdir gollum $ bundle init $ git init
Gemfileを編集。
# A sample Gemfile source "https://rubygems.org" gem 'gollum' # formats gem 'redcarpet' gem 'github-markdown' gem 'wikicloth' # capistranoとか group :development do gem 'capistrano' gem 'capistrano-ext' end
bundle installする
bundle install --path vendor/bundle
あ、そうそう、.gitignoreも適当につくっときましょう。
/.bundle /vendor/bundle
とりあえずlocalでrackupできるとこまで。
config.ruをふわっと書く
#!/usr/bin/env ruby require 'rubygems' require 'gollum' require 'gollum/frontend/app' use Rack::ShowExceptions Gollum::Page.send :remove_const, :FORMAT_NAMES if defined? Gollum::Page::FORMAT_NAMES Gollum::Page::FORMAT_NAMES = { :markdown => "Markdown", :mediawiki => "MediaWiki" } Precious::App.set(:gollum_path, repos_path) Precious::App.set(:default_markup, :markdown) Precious::App.set(:wiki_options, {universal_toc: true}) run Precious::App
rackup (ッターン!
$ bundle exec rackup [2012-12-21 19:36:14] INFO WEBrick 1.3.1 [2012-12-21 19:36:14] INFO ruby 1.9.3 (2012-11-10) [x86_64-darwin11.4.2] [2012-12-21 19:36:14] INFO WEBrick::HTTPServer#start: pid=22609 port=9292
"localhost:9292"で確認できたよー。わーい。
よし。capistranoでdeployするぞう。
このままcap deployする方向ですすめるとdeployするたびにwikiのデータがぶっ飛ぶというダメwikiになってしまうので、wikiのデータ用のレポジトリは分けましょうそうしましょう。
config.ruで別レポジトリがなければ作る的な処理を追加。
#!/usr/bin/env ruby require 'rubygems' require 'gollum' require 'gollum/frontend/app' use Rack::ShowExceptions # reposがなければ作ればいいじゃない repos_path = File.join(Dir.pwd, 'wiki.git') unless File.exists? repos_path Dir::mkdir(repos_path) end unless File.exists? File.join(repos_path, '.git') Grit::Repo.init(repos_path) end Gollum::Page.send :remove_const, :FORMAT_NAMES if defined? Gollum::Page::FORMAT_NAMES Gollum::Page::FORMAT_NAMES = { :markdown => "Markdown", :mediawiki => "MediaWiki" } Precious::App.set(:gollum_path, repos_path) Precious::App.set(:default_markup, :markdown) Precious::App.set(:wiki_options, {universal_toc: true}) run Precious::App
.gitignoreもちょっと修正
/.bundle /vendor/bundle /wiki.git /public
んで、"capify ."して編集するなり、ゼロから書くなりでconfig/deploy.rbを用意。
#encoding: utf-8 # capistrano-ext require "capistrano/ext/multistage" # bundler require "bundler/capistrano" set :bundle_flags, "--deployment" #################################################### # Application #################################################### set :application, "gollum" set :keep_releases, 5 # releasesに残すverの数 #################################################### # Deploy user #################################################### set :use_sudo, false default_run_options[:pty] = true ##################################################### # Git ##################################################### set :scm, :git set :scm_verbose, true set :repository, "git+ssh://path/to/hoge.git" #################################################### # Task #################################################### namespace :deploy do after 'deploy:setup' do sudo "chmod -R o+w #{deploy_to}" run "mkdir -m 777 #{shared_path}/wiki.git" end after 'deploy:create_symlink' do run <<-CMD cd #{release_path}; rm -fr #{release_path}/public && ln -nfs `bundle show gollum`/lib/gollum/frontend/public/gollum #{release_path}/public CMD run <<-CMD rm -fr #{release_path}/wiki.git && ln -nfs #{shared_path}/wiki.git #{release_path}/wiki.git CMD end task :start, :roles => :app do run "touch #{current_release}/tmp/restart.txt" end task :stop, :roles => :app do end desc "Restart Application" task :restart, :roles => :app do run "touch #{current_release}/tmp/restart.txt" end # restart後にcleanup after "deploy:start", "deploy:cleanup" after "deploy:restart", "deploy:cleanup" end
特に必要性ないけどいつものかんじでcapistrano-ext使ってるのでconfig/deploy/**.rbもつくる。とりあえず今回はproduction.rbにするべ。
#encoding: utf-8 #################################################### # Application #################################################### set :deploy_to, "/path/to/dir" #deploy先 set :rails_env, 'production' # いらんかも ##################################################### # Servers ###################################################### server 'hoge.net', :web, :app role :db, "#{roles[:app].first}", :primary => true ##################################################### # Git ##################################################### set :branch, 'master'
で、ひとまずdeployはまだ置いておいてサーバのほうの設定しましょう
apacheとpassengerをすでに入ってるってことでインスコとかの説明割愛。
apacheの設定にごにょごにょ追加。
<VirtualHost *:80> ServerName wiki.hoge.net ErrorLog logs/wiki_error_log CustomLog logs/wiki_access_log combined DocumentRoot /path/to/dir/gollum/current/public <Directory "/path/to/dir/gollum/current/public"> Options FollowSymLinks -Includes -ExecCGI -Indexes -MultiViews AllowOverride All Order allow,deny Allow from all </Directory> RackBaseURI / RailsEnv production </VirtualHost>
んでapache再起動
$ sudo apachectl restart
よっしゃーdeployだー
初回だけまずは必要なdirやらfile作成
$ bundle exec cap production deploy:setup
問題なくsetup完了したらコードをポポポポーン。
あ、もちろんココまでに適宜gitにcommitはしててremoteにpushまで済んでるってことで。
$ bundle exec cap production deploy
わーい。できたよー。
android sdkなんかはすでに入ってる前提。あとmac lion。
sublime androidをインストール
cloneしてPackagesディレクトリにつっこむ。
$ git clone git://gitorious.org/sublime-android/sublime-android.git $ mv sublime-android ~/Library/Application Support/Sublime Text 2/Packages/
もしかしたらPackage Controlで入れれたりしたのかもしんないけど。
設定いじいじ
まずは、 Packages/sublime-android/ 内の「Android (OSX).sublime-settings」を直接か Packages/Users/ 内にコピーしてから、自分の環境にあわせて設定。
{ "jdk_bin": "/usr", "ant_bin": "/usr/bin", "default_android_project_dir": "/path/to/workspace", "android_sdk": "/path/to/sdk", "last_apk_path": "", "last_package_name": "" }
"jdk_bin"は「bin/java」があるディレクトリを指定。"ant_bin"は「ant」があるディレクトリを指定。"android_sdk"は普通にsdkのディレクトリ(toolsやらplatform-toolsがあるとこ)を指定。
プロジェクト作ってみる
メニューバーから[Tools]->[Android]->[New project]をポチッとな。
- Project name:
- Activity name:
- Package name:
- Project path:
と順に聞かれるので適宜入力。
- 次にすでに入っているplatformからbuild targetを選択する。
※なので、事前に[Tools]->[Android]->[SDK Tools]->[Launch Android SDK Manager]で必要なものだけ入れといたほうがいいとおも。
projectの設定みてみる
さっきの「Project path」で入力した箇所にhello worldプロジェクトが作成されてる。
この時点でCmd+bでBuildしてみるとビルドしてインスコまで完了する。(実機接続されてれば実機に)
ちなみにCmd+bした時に「Buildfile: build.xml does not exist!」みたいなこと言われる場合は
- build.xml (antでbuildするのに必要。いろいろ書いてある)
- ant.properties (antのデフォ値を上書きしたいときに使うっぽい。デフォでは空)
- local.properties (ant関連の各自のlocal環境の値を書くファイルっぽい。デフォだとsdkのpathが書いてる)
- project.properties (project毎の設定が書いてある。eclipseでの開発時でもおなじみ)
このへんのどれかのファイルを選択してる状態で押すとだいじょぶなはず。
インスコ後に起動までしたいよう
eclipseだとbuild->インスコ->起動までしてくれるんだし、こっちでもそうしたいなーってことでちょっといじる。
ぐーぐる先生に聞いてみたところ、
$ adb shell am start -a android.intent.action.MAIN -n [パッケージ名]/.[Activity名]
shellではこれを叩けばいけるらしい。
というわけで、これを叩くantコマンドを追加しよう。
で、build.xmlをふわっと見てみるとカスタムするなら「custom_rules.xml」ての追加って手もあると。
じゃあそうしてみようというわけでcustom_rules.xmlを追加。
<?xml version="1.0" encoding="UTF-8"?> <project name="custom_rules" default="help"> <target name="run"> <exec executable="adb"> <arg value="shell"/> <arg value="am"/> <arg value="start"/> <arg value="-a"/> <arg value="android.intent.action.MAIN"/> <arg value="-n"/> <arg value="${start.activity}"/> </exec> </target> </project>
で、↑でつこてる「start.activity」変数をproject.propertiesに追加して、パッケージ名とアクティビティ名をそのプロジェクトのものにする。
start.activity=com.hoge/.MainActivity
ここまで出来たらshell上で、build.xmlがあるディレクトリにて
$ ant run
てすれば起動はできるようになってる。
あとはこれを一連のbuildの流れの最後に追加すればOKということに。
実際のbuild時の処理は Packages/sublime-android/Android.sublime-build に書いてあるのでここをいじる。
※Packages/Users/に入れたらデフォを上書きできるかなーと思ったら出来なかったので直接いじるしかなさそう。
Android.sublime-buildのosxの箇所で
"osx": { "cmd": ["ant", "uninstall", "&&", "ant", "debug", "install", "run"], // <- 最後にrunを追加! "working_dir": "$project_path", "target": "android_build_install" },
"cmd"の最後に"run"を追加する。
ここまで出来たらCtrl+bでのビルド時にbuild->インスコ->起動までしてくれるようになってる。ヤッター!
あれれ。antのログで日本語が出ないぞう。
ここまではOKだったけど、ビルド時にエラーが発生したりで日本語ログが出てるはずの際にsublime text2のログウィンドウでは
[Decode error - output not utf-8]
が表示されて日本語が消え去ってる。
ググったところ、以下の解決法をみつけた。
macでantのメッセージが文字化けする - 作業ノート
なるほどなるほど。というわけで自分の場合は.zshrcに
export ANT_OPTS=-Dfile.encoding=UTF8
と追記してみたら、shell上で「ant debug install run」とか実行する分には日本語が化けることなく表示されるようになったけど、sublime上では相変わらず。
そっかーshellとsublimeで環境引き継いでるわけじゃないもんなー、てなわけでわりとザックリな方法で対応。
前述のAndroid.sublime-buildのosxのcmdを変更。
"osx": { "cmd": ["ANT_OPTS=-Dfile.encoding=UTF8", "ant", "uninstall", "&&", "ANT_OPTS=-Dfile.encoding=UTF8", "ant", "debug", "install", "run"], "working_dir": "$project_path", "target": "android_build_install" },
わあい。日本語表示されたよーヾ(*´∀`*)ノキャッキャ
だいぶ横道にそれてる気もするけど最後にもすこし
あとまれによくあるbuild時になんでエラーになるんだろーな事態。そんなときはとりあえずプロジェクトをキレイキレイにしたいよね!
とりあえず、shellのプロジェクトdirで↓を叩けばOK。
$ ant clean
ほんとはsublimeのメニュー内に[Clean project]っての作ろうかとか考えてたけど、そこまですることないよねーって思ってやめた。
たまにやって毎度忘れるのでメモ。
やった環境
- Mac OSX Lion
- ruby 1.9.3p327
- gem 1.8.23
- capistrano (2.12.0)
- capistrano-ext (1.2.1)
- capistrano_colors (0.5.5)
capistrano-extは必要よねー。
gemのインストールとかは略
$ capify .
でCapfileとconfig/deploy.rbが作成される。
あとはレシピいじいじ
いま使ってるのはこんなかんじ。
https://gist.github.com/4064116
deploy:force_setupは既存のものがあったりでめんどくさい時にドッカーンてするやつ。
必要に応じて、config/deploy/*.rbをいじったり作ったり。