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から流用して開発したい、という場合に用意するものをまとめました。完璧に調べあげたわけではないので、まだ足りない部分が出てくるかもしれません。
やりたかったのは以下の通り。
- DBの設定ファイルはRailsと同じconfig/database.ymlを使いたい
- マイグレーションファイルをdb/migrate以下で管理したい
- マイグレーション関連のタスクはrake db:xxxで実行させたい
色々試行錯誤してこれでいけるんじゃないかな、というのは以下の様な感じ。application.rbの様なファイルも用意する場合、多少requireする場所など変わってくるかもしれません。バージョンは4.1.1です。
# 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"