昨日のエントリの続きになります。
やっぱりcompassも使いたいということで、こっそりと入れてみました。
compassはsassのfunctionやmixinなどが便利につまったフレームワークですね。
rails3.0.5のプロジェクトで使用します。
#{RAILS _ROOT}はrailsのアプリケーションルートに適宜読み替えてください。
まずは #{RAILS _ROOT}/app/assets/stylesheets下に環境を作ってみたいと思います。
まずはGemfileにgem ‘compass’を追記して bundle install
compassはsassに依存しているので、昨日のGemfileに記述したsassの行を削除してもいいかもしれません。
compassの環境を作ります。
1
2
|
cd #{RAILS_ROOT}/app/assets/stylesheets
compass create
|
コンソールに色々ファイルが出来たと思います。
デフォルトのファイル達は使わないので消しちゃいます。
1
2
|
rm -r sass
rm -r stylesheets
|
config.rbを開いて修正します。
1
2
3
4
5
6
7
|
# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "../../../public/stylesheets"
sass_dir = "."
images_dir = "../images"
generated_images_dir = "../../../public/images"
javascripts_dir = "../../../public/javascripts"
|
sass _dirがコンパイル対象のscssが置かれているパス。
css _dirがコンパイル後のcssの出力先ですね。
変更を監視して自動で変換してくれるようにコンソール上でwatchスタートします。
1
2
|
cd #{RAILS_ROOT}/app/assets/stylesheets
compass watch
|
#{RAILS _ROOT}/app/assets/stylesheets/test.scssを作成してみます。
1
2
3
4
5
|
@import "compass/css3";
.sample {
@include border-radius(25px);
}
|
#{RAILS _ROOT}/public/stylesheets/test.cssを開いてみます。
hamlをGemfileに追加しました!と宣言し、実際にhamlを使ったら他のエンジニアに読めないヽ(゚´Д`)ノ゚と言われて数ヶ月がたちました。
今日はRails3.0.5にこっそりとsassを導入しました。
まずはGemfileに gem 'sass'
を追記して bundle install
scssファイルの置き場所は将来のバージョンアップを見越して、 app/assets/stylesheets/
に作りました。
お気に入りのディレクトリに変えてもいいですね。
変更を監視して自動で変換してくれるようにコンソール上で sass --style --watch app/assets/stylesheets/:public/stylesheets
を実行。
これで自動的にapp/assetstylesheets以下のscssファイルがcssにコンパイルされてpublic/stylesheetsの下に作成されます。
app/assets/stylesheets/test.scss
を作成。
1
2
3
4
5
|
$defaultFontSize: 10px;
.test{
font-size: $defaultFontSize;
}
|
watchしているコンソールを見てみると動いたっぽいメッセージが表示されていると思います。
public/stylesheets/test.cssの中身を見てみると。
1
2
3
|
.test {
font-size: 10px;
}
|
と出来てます。
これでこっそりとsass書けますね!
ここまできたら、compassも導入したいなぁ。
1
2
3
|
arr = [1,2,3,4,2,5]
arr.uniq.length == arr.length
|
1
2
3
4
5
6
|
str = "@123@56"
str.index("@") #=> 0
str.rindex("@") #=>4
str.index("@") != str.rindex("@")
|
左からと右からの指定文字の位置を調べて違ってたら、同じ文字が二回使われているねというだけのロジック。
僕は文系ロジックと勝手に命名しているロジックがあります。
どういったのが文系ロジック?と聞かれると困りますが。なんかにおいです。
上記は文系ロジックっぽいかなと思うのですが。どうでしょうか?
コントローラでget post put deleteを識別する方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# getかどうか
request.get?
# postかどうか
request.post?
# putかどうか
request.put?
# deleteかどうか
request.delete?
# 文字列で判定
request.request_method == "get"
#シンボルで
request.request_method_symbol == :get
|
htmlでまったく同じselectボックスを複数並べ、選択したら他のプルダウンからその要素を消すカスタムイベントを登録可能なjquery
pluginを書きました。
動作確認用のexample.htmlを含めgithubに公開しているので、よかったらどうぞ。
自社サービスで二つのスマフォ用webアプリでsession共有して行き来している時にdump
format errorとなって落ちることがあった。
一度発生すると、F5押してもずっとdump format error。
原因はsessionにあることまでは色々なサイトを見ているうちにわかったんだけど、どこもブラウザのクッキー削除とかの解決方法しかなかった。
原因を追っていたら、うちの場合はmemcache-clientでデータをマーシャルロードしている時に落ちていることがわかった。
んで、ロードする前のデータ見てたらflashの文字が見えたので、flashを使わなくしたらなんか解決したっぽい。
なんか煮えきらない日記ですが、誰か困ってたらやってみるといいかもしれないです。
rubyで自分がどう呼び出されているかを調べる
printstacktraceのようなもの。
callerと書けば、どこから呼ばれたのかがわかる。
本番環境でなんか2件データが出来る時があって、どうしても原因がわからないのでどこから呼ばれてるのか仕込んでみた。
1
2
3
4
5
6
7
|
require 'logger'
logger = Logger.new('log/debug.log', 'daily')
logger.level = Logger::DEBUG
logger.info( "#####" + DateTime.now.strftime("%Y年%m月%d日 %H時%M分%S秒") + "#####")
logger.info(self.inspect)
logger.info(caller.join(" n"))
logger.info( "############")
|
ログは一日置きにローテートさせてみた。
もう一週間ぐらいたつけど、罠しかけた途端現象が起きなくなるという。
表題の通り
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def hoge
p "hoge"
end if true
hoge # => "hoge"
def bar
p "bar"
end if false
bar # => NameError: undefined local variable or method `bar' for main:Object
def hogefuga
puts hoge + "fuga"
end if respond_to?(hoge)
hogefuga # => # hogefuga
|
こうすると取れる
1
|
Rails.application.class.parent_name
|