twitter-bootstrap-railsとkaminariをBootstrap3に対応させる

twitter-bootstrap-railsはBootstrap3に対応したブランチがあるので、Gemファイルをそちらを参照するよう修正します。

gem "twitter-bootstrap-rails", github: 'seyhunak/twitter-bootstrap-rails', branch: 'bootstrap3'

kaminariは_paginator.html.erbのclass="pagination"をdivからulに付け替え。

<%= paginator.render do -%>
  <div>
    <ul class="pagination">

意外とすんなりいけます。kaminari含めた全面的なBootstrap3対応はもう少しかかりました。

ActiveRecordを単体で使ってる場合のタイムゾーンの設定

ActiveRecordだけ使う場合config.〜という設定が出来ないので直接指定します。

Time.zone_default =  Time.find_zone! 'Tokyo' # config.time_zone
ActiveRecord::Base.default_timezone = :local # config.active_record.default_timezone

Time.zone_defaultはDBから値を取得した時、ActiveRecord::Base.default_timezoneはDBに値を保存する時のタイムゾーンの設定です。

RubyでZIPファイルの中身を読む

RubyでZIPファイルを扱う場合、ziprubyとrubyzipがあるみたいですね。ziprubyは開発が止まってるので今回はrubyzipを使用しました。

require 'zip'

doc = Zip::File.open("081220120514033218.zip") do |zip|
  zip.find {|entry| /tdnet-.+sm-.+\.xbrl/ =~ entry.name }
    .get_input_stream {|is| is.read.force_encoding "UTF-8" }
end

p doc # => ファイルの内容

ActiveRecordを単体で使ってマイグレーションやRSpecを実行する

※最終更新日(2014/6/30)

素直にRailsに乗っかるのが簡単ですね。

config/application.rb
#require 'rails/all'
require 'active_record/railtie'

たったこれだけ。あとはenvironments以下の不要になった設定項目を削除します。

.

Webじゃないアプリの開発でActiveRecordは使いたいけどRailsの全ては必要ない、でもDBの設定ファイルやマイグレーションの機能はRailsから流用して開発したい、という場合に用意するものをまとめました。完璧に調べあげたわけではないので、まだ足りない部分が出てくるかもしれません。

やりたかったのは以下の通り。

色々試行錯誤してこれでいけるんじゃないかな、というのは以下の様な感じ。application.rbの様なファイルも用意する場合、多少requireする場所など変わってくるかもしれません。バージョンは4.1.1です。

Rakefile

# rake db:〜のコマンドを読み込む
load "active_record/railties/databases.rake"

# 設定しないとrake db:createが落ちる
ActiveRecord::Tasks::DatabaseTasks.env = ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || 'development')
ActiveRecord::Tasks::DatabaseTasks.database_configuration = YAML.load_file('config/database.yml')

ActiveRecord::Tasks::DatabaseTasks.db_dir = 'db' # 設定しないとrake db:migrateが落ちる
#ActiveRecord::Tasks::DatabaseTasks.fixtures_path = #まだ試してない
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = 'db/migrate'
#ActiveRecord::Tasks::DatabaseTasks.seed_loader = #まだ試してない
#ActiveRecord::Tasks::DatabaseTasks.root = Pathname.new(Dir.pwd) # 設定しないとsqlite3のrake db:dropが落ちる

# lib/rails/application.rbで定義されているタスクをエミュレート
task :environment do
  require File.expand_path '../config/environment', __FILE__
end

environment.rb

# database.ymlを読み込んでDBに接続する
ActiveRecord::Base.configurations = YAML.load_file('config/database.yml')
ActiveRecord::Base.establish_connection (ENV["RAILS_ENV"] || :development).to_sym

spec_helper.rb

ENV["RAILS_ENV"] ||= 'test'

require 'active_record'
#require 'rspec/rails/adapters'
#require 'rspec/rails/fixture_support'

require File.expand_path '../../config/environment', __FILE__

※細かい設定は省略

改めて見返してみるとRailsまるごと持ってきて必要なところだけ使えばいいかなって気がします。テストでDBロールバックしないですし。

cap deployで「そのようなファイルやディレクトリはありません」というエラーが出てデプロイに失敗した場合

Capistranoなんですが、deploy.rbに諸々設定を書いてさあ後はデプロイコマンドが通ることを確認すれば終わりだな、と思っていたら思わぬエラーに遭遇しました。

chmod
: cannot access `~/myapp/releases/20130912154227'
: そのようなファイルやディレクトリはありません

、、、ディレクトリあるはずなんだけど。

実際に実行されたコマンドを見ると、何故かディレクトリのパスに「\\」が付加されています。
これを回避するには、:deploy_toに絶対パスを指定する必要があるようです。

set :deploy_to, "/home/user/test/#{application}"

ruby-buildをインストールしたのに「rbenv: no such command `install`」と怒られた時

rbenvを/usr/local/rbenvにインストールし、ruby-buildをpluginsディレクトリに配置して、さてインストールしようと思いコマンドを叩くと怒られるわけです。

一瞬ポカーンとなりますよね。( ゚д゚)ポカーン

原因なんですが、rbenvのデフォルトのルートディレクトリが~/.rbenvだからでした。それが今は/usr/local/rbenvになっててruby-buildを読み込めていないと。

これを

export PATH="/usr/local/rbenv/bin:$PATH"

RBENV_ROOTを設定して、環境変数を読みこめばOKです。

export RBENV_ROOT="/usr/local/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"

JenkinsのBuild Pipeline Pluginが利用可能なプラグインの一覧に現れない件

yumで入れたJenkinsを使っているのですが、バージョンによって(?)使用可能なプラグインの一覧にBuild Pipeline Pluginが出たり出なかったりするんでしょうか。

あるVPSには1.477が入っていてBuild Pipeline Pluginが一覧に出るのですが、別のVPSには1.501が入っていて一覧に出ません。

Jenkinsのバージョンを1.505にしてみると一覧に出るようになりました。Build Pipeline PluginのRequired Coreは1.457なのでおかしな話なのですが。