ページ

2012年9月9日日曜日

ctags使おうとしたらハマった

ctagsを使ったことがなかったので、とりあえず使ってみようとしたらハマった。
% ctags -R
すると
ctags: no input files specified.
Try `ctags --help' for a complete list of options.
って頑に言われる。

ひとまず言われた通り ctags --help してみると
-Rオプションのところに
-R, --no-regex
Don't create tags from regexps for the following files.
とか書いてある。なんかおかしい。

ctags --versionしてみると
ctags (GNU Emacs 24.1)
Copyright (C) 2012 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README

なんか違う。
前にhomebrewでemacs24入れたりしたときにおかしくなったのだろうか。

ともあれ、コレジャナイので入れ直す。
% brew install ctags

Error: The linking step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link ctags'
とか言われたので、言われた通りにする。
% brew link ctags

できたようなのであらためて
% ctags -R

ちゃんとtagsファイル出来た。

2012年7月22日日曜日

[Mac]Scalaで日本語使う

日本語を出力しようとしたら文字化けした。

JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' をつけて実行すれば文字化けしない。
% JAVA_TOOL_OPTIONS='-Dfile.encoding=UTF8' scala hoge.scala

.zshrcに以下を追加。
export JAVA_OPTS="-Dfile.encoding=UTF-8"
REPLでも日本語使えるようになるけど、書いて消すとズレたりするありがちな感じになる。

参考: Scala, Mac and -Dfile.encoding=UTF-8 - Kato Kazuyoshi

2012年7月16日月曜日

Sinatraの自動リロード

2012/7/16 10:00 指摘によりsinatra-contribを使う旨を追記&修正

未だにshotgun使ってた。

参考:
モノクロームの中: sinatra (2) - オートリロード -
Sinatra::Reloader (part of Sinatra::Contrib)

gemをインストール
% gem install sinatra-contrib

Classicスタイル
require "sinatra"
require "sinatra/reloader" if development?

Modularスタイル
require "sinatra/base"
require "sinatra/reloader"

class MyApp < Sinatra::Base
  configure :development do
    register Sinatra::Reloader
  end
end
developmentモードで起動したときに有効になる。(デフォルトでdevelopmentモード)

ところでrackup -E で設定できるのってdevelopmentとtestとproductionだけで合ってるんだろうか。ハッキリとこれです!って言ってるのが見つけられなかった。


あと、Bundler使うパターン

Gemfileがこう
source :rubygems

gem 'sinatra', require: 'sinatra/base'

group :development do
  gem 'sinatra-contrib', require: 'sinatra/reloader'
end
で、本体のほうがこう
class App < Sinatra::Base
  configure :development do
    Bundler.require :development
    register Sinatra::Reloader
  end
end
bundle exec rackupで起動しよう。

ファイル単位でもリロードの設定を変えられるようだ。
http://www.sinatrarb.com/contrib/reloader


今回の、shokaiさんはいつからやっていた?は2年と3ヶ月前でした。
sinatra開発時に自動リロードする - 橋本詳解

2012年6月29日金曜日

Playをインストール & Play Scala動かす

最近は仕事とかいうものにかまけていたせいでブログを書いてなかった。

% brew search play
したらplay出てきたけど、こういう一般的な言葉が名前だと合ってるのか不安極まりない。

% brew info play

play 2.0
http://www.playframework.org/
Not installed
https://github.com/mxcl/homebrew/commits/master/Library/Formula/play.rb

どうやら合っているようなのでインストールする。

% brew install play

なかなかの重量級なようでダウンロードにも時間がかかった。

と思ったらインストールが終わってた。ディレクトリを移動しただけだったようだ。


とりあえずJavaには興味がないのでScalaのプロジェクト作る
% play new calas --with scala
そしたらなんか聞かれた
What is the application name?
> calas
え?calasって言ったじゃないですか。ご丁寧にデフォルトでcalasって入ってるし。

まあプロジェクト名とアプリ名は違うこともあるか。しょうがないしょうがない。

Which template do you want to use for this new application?

1 - Create a simple Scala application
2 - Create a simple Java application
3 - Create an empty project

>
え?Scalaでって言ったじゃないですか。しかも今度はデフォルト入ってないし。
1番を選択。(2番だとどうなるんだろう)

できたら動かす
% cd calas
% play run
やけに時間がかかった。初回の初回だからか?

ポート9000で動いているようなのでlocalhost:9000にアクセス。
Playの公式サイトと同じような画面が表示される。

これはしかしなかなかの全部入り感でいじるにはちょっと萎えますね。
3番選ぶとよかったのかな。

2012年5月22日火曜日

Padrinoでこんにちはしてみた

http://jp.padrinorb.com/

インストール
% gem install padrino

プロジェクトの生成
% padrino g project padrino-test

gはgenerateのg。genとかgenerateでも良い。

projectのところに生成するものを指定。
生成できるのは project, app, mailer, controller, model, migration, plugin, admin, admin_page。

padrino-testはプロジェクト名。適当。

デフォルトだとこんなんが生成される。
.
├── Gemfile
├── app
│   ├── app.rb
│   ├── controllers
│   ├── helpers
│   └── views
│   └── layouts
├── config
│   ├── apps.rb
│   └── boot.rb
├── config.ru
├── public
│   ├── favicon.ico
│   ├── images
│   ├── javascripts
│   └── stylesheets
└── tmp

ちなみに --tiny オプションをつけて生成するとcontroller、helper、mailerフォルダーがrbファイルと化す。
.
├── Gemfile
├── app
│   ├── app.rb
│   ├── controllers.rb
│   ├── helpers.rb
│   └── mailers.rb
├── config
│   ├── apps.rb
│   └── boot.rb
├── config.ru
├── public
│   ├── favicon.ico
│   ├── images
│   ├── javascripts
│   └── stylesheets
└── tmp

生成のときにはコンポーネントを色々選べる。僕の趣味で選ぶとこんな感じかしら。
% padrino g project padrino-slim -d mongoid -t rspec -s jquery -e slim -c sass -m mocha -b
-b つけるとbundle installまでやってくれる(自分でやらなくても、最初にアプリケーション起動するときに勝手にbundle installしてくれるらしい。最初って初回って意味だろうか)。

もっと適当な感じのときは
% padrino g project feeling --tiny -e slim -c sass -b
とかか。Slimは外せない。


jqueryとprototype.js両方使いたいときとかあるんじゃないか?と思って
% padrino g project -s prototype -s jquery
とかやってみたら後に指定したほうになるみたいだった。cucumberとrspec両方使う人とかいると思うけどね?
(と思ってこっちもやってみたら、cucumber指定したらデフォでrspecの分も生成されてる?)

ともあれ、生成したら動かしてみる。
ルートディレクトリに入って
% padrino s

http://0.0.0.0:3000 で動き出す。
ログもカラフルに吐き出される。

http://0.0.0.0:3000 にアクセスしてみると404の画面になる。

app/app.rbを編集
get '/' do
  "something"
end
とか適当に書く。

shotgunとか使わなくても自動リロードされてるようだ。

なぜかここまで書くのに3日ぐらいを費やしてしまったので(padrino自体をいじったのは10分ぐらいなのに)、とりあえず一区切り。

2012年5月9日水曜日

Ubuntu + Passenger + Nginx インストール

Rubyはrvmで入れた1.9.3。
% gem install passenger
% rvmsudo passenger-install-nginx-module

そしたら
Curl development headers with SSL support... not found
って出た。

足りないのはこれだけだったので、指示に従ってインストール
% sudo aptitude install libcurl4-openssl-dev
そして改めて
% rvmsudo passenger-install-nginx-module

途中、選択肢が出るので選択する。人生は選択の連続。

インストール先も設定できるが 、何のこだわりもないのでデフォルトの /opt/nginx 。
設定ファイルの場所は /opt/nginx/conf/nginx.conf になる。

編集する。
pid /var/run/nginx.pid;

server {
listen 8080;
server_name hogehoge.jp;

# publicを指定するらしい
root /var/www/hogeapp/public;

passenger_enabled on;
}


Nginx-init-ubuntuの起動スクリプトを/etc/init.d/nginxにコピペ&ちょっと編集。
DAEMON=/opt/nginx/sbin/nginx
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
にする。

% sudo chmod a+x /etc/init.d/nginx
% sudo update-rc.d -f nginx defaults

参考:
Rails 3 on Ubuntu 10.10 with RVM, Passenger and Nginx « theKindOfMe
Ubuntu 10.04 TLS に nginx + passenger + sinatra を入れたメモ(1) - Moderation is a fatal thing. Nothing succeeds like excess.
Ubuntuに、passenger-install-nginx-moduleした « blog.udzura.jp