Skip to content
Kosuke Tanabe edited this page Apr 30, 2017 · 1 revision

アップデート (Update)

  • Railsのアップデートについては、 UpgradingRails を参照してください。
  • 1.2系(開発中)へのアップデートについては、Update-to-1.2を参照してください。

以下のうち、該当するバージョン間の手順をすべて実行してください。

1.1.2から1.1.4へのアップデート手順

Gemfileに以下の修正を行ってください。

# , '~> 2.0.2'がなければ追加
gem 'dotenv-rails', '~> 2.0.2'

さらに以下のコマンドを実行した後、Enjuを再起動してください。

$ cd /path/to/enju
$ bundle update

1.1.1から1.1.2へのアップデート手順

config/initializers/assets.rb に以下の行を追加してください。

Rails.application.config.assets.precompile += %w( *.png *.gif )

次に、以下のコマンドを実行してください。

$ bundle exec rake assets:precompile

Enjuを再起動してください。

$ sudo restart enju_leaf

1.1.0.rc18から1.1.1へのアップデート手順

(念のため)Enjuを停止してください。

$ sudo stop enju_leaf

Gemfileの以下の部分を編集してください。

# 変更前
#gem 'sunspot_solr', '~> 2.2'

# 変更後
gem 'sunspot_solr', '2.2.0'

また、Ruby 1.9.3をお使いの場合のみ、以下の行をGemfileに追加してください。

# 変更前
#gem 'exception_notification", '~> 4.1'

# 変更後
gem 'exception_notification', '4.1.1'
gem 'cancancan', '~> 1.12.0'

次に、以下のコマンドを実行してください。

$ bundle update
$ bundle exec rake railties:install:migrations
$ bundle exec rake db:migrate RAILS_ENV=production
$ bundle exec rake assets:precompile

Enjuを再起動してください。

$ sudo start enju_leaf

Solrが起動したら(トップ画面が表示されたら)、以下を実行してください。

$ bundle exec rake sunspot:reindex RAILS_ENV=production

なお、1.1.0からは書影の設定方法が図書館全体の設定で行うように変わりました。 初期設定マニュアル 「3-1 図書館全体の設定をする」を参考に、設定を再度行ってください。

1.1.0.rc7〜1.1.0.rc17から1.1.1へのアップデートのための事前作業

作業前に、必ずバックアップを取得してください。

Gemfileで最新版のRailsを指定してください。

gem 'rails', '3.2.22' # 3.2系
gem 'rails', '4.1.14' # 4.1系
gem 'rails', '4.2.5' # 4.2系

Gemfileに以下の行が含まれていた場合、削除してください。

# 以下の2行を削除
gem 'protected_attributes'
gem 'statesman', '~> 0.8'

Rails 3.2/4.1をお使いの場合のみ、Gemfileに以下の行を追加してください。Rails 4.2では追加の必要はありません。

gem "foreigner"

これは、itemsテーブルのmanifestation_idカラムに外部キー制約を追加するためのものです。manifestationsテーブルのidカラムに存在しない値を、itemsテーブルのmanifestation_idカラムに設定できなくなります。ただし、この機能が有効になるのは、PostgreSQLとMySQLをお使いの場合のみです。

Rails 3.2をお使いの場合、以下の行をGemfileに追加してください。

# Rails 3.2を使用している場合、以下の行を追加
gem 'strong_parameters'

Rails 3.2をお使いの場合、config/application.rbを以下のように変更してください。

    # 変更前
    #config.active_record.whitelist_attributes = true
    # 変更後
    config.active_record.whitelist_attributes = false

app/controllers/application_controller.rb を以下のように変更します。

以下の行があればすべて削除します。

  # 以下の行があればすべて削除
  private
  def mobylette_options
    @mobylette_options ||= ApplicationController.send(:mobylette_options).merge(
      {
        :skip_xhr_requests => false
      }
    )
  end

以下の行があれば削除します。

  # 以下の行があれば削除
  mobylette_config do |config|
    config[:skip_user_agents] = Setting.enju.skip_mobile_agents.map{|a| a.to_sym}
  end

以下の行がなければ追加します。

  # 以下の行がなければ追加
  mobylette_config do |config|
    config[:skip_user_agents] = ENV['ENJU_SKIP_MOBILE_AGENTS'].to_s.split(',').map{|a|
      a.to_sym
    }
  end

app/models/users.rb に以下のような attr_accessible を含む行が含まれていた場合、削除してください。

# 以下の行を削除
attr_accessible :username
attr_accessible :email, :password, :password_confirmation, :remember_me

依存ライブラリとデータベースを更新します。

$ bundle update
$ bundle exec rake railties:install:migrations

検索サーバを停止します。以下は仮想マシンの例です。

$ bundle exec rake sunspot:solr:stop RAILS_ENV=production

検索サーバの設定ファイルを再作成します。

$ mv config/sunspot.yml config/sunspot.yml.orig
$ rails g sunspot_rails:install
$ mv solr solr_old

検索サーバの設定ファイル config/sunspot.yml を編集します。なお、Tomcatなど外部のアプリケーションサーバでSolrを動作させている場合、ホスト名やポート名も変更してください。

    # 変更前
    #path: /solr/production

    # 変更後
    path: /solr/default

検索サーバを再起動します。以下は仮想マシンの例です。

$ bundle exec rake sunspot:solr:start RAILS_ENV=production

利用者グループ名を修正します。

$ rails c production
> group = UserGroup.where(name: 'First group').first
> group.name = 'first_group'
> group.save!
> exit

データベースの内容を更新します。以下のコマンドは、検索サーバ(Solr)を起動させた状態で実行する必要があります。

$ rails g enju_biblio:setup fixture
$ rails g enju_library:setup fixture
$ rails g enju_circulation:setup fixture
$ rails g enju_message:setup fixture
$ bundle exec rake db:migrate RAILS_ENV=production
$ bundle exec rake enju_circulation:migrate_old_checkout RAILS_ENV=production
$ bundle exec rake enju_leaf:upgrade RAILS_ENV=production

注: "rails g ~ " の場合、"Overwrite /xxx/xxx/xxx.yml? (enter "h" for help) [Ynaqdh]" とでることがありますが、その場合は "a" を入力すると次に進みます。

なお、上記の作業後に1.1.0.rc18から1.1.1へのアップデート手順の内容を実行してください。

1.1.0.rc3から1.1.0.rc7へのアップデート

$ cd your_enju/db/migrate
$ wget https://gist.github.com/nabeta/5972570/raw/1b62a8b461b787a3c536733418da947ad862cddd/20130828014440_rename_patron_to_agent.rb
$ rake db:migrate RAILS_ENV=production

1.1.0.beta3から1.1.0.rc2へのアップデート

gemを使用してインストールしている場合

$ cd your_enju

Gemfileを編集します。

gem 'enju_leaf', '~> 1.1.0.rc2'

app/controllers/application_controller.rbを編集します。以下の行を追加します。

  private
  def mobylette_options
    @mobylette_options ||= ApplicationController.send(:mobylette_options).merge(
      {
        :skip_xhr_requests => false
      }
    )
  end

config/application.ymlを編集します。

defaults: &defaults
  enju:
    erms_url:
    # 以下の2行を追加
    skip_mobile_agents:
      - ipad

以下のコマンドを実行します。

$ bundle update
$ rake enju_biblio_engine:install:migrations
$ rake enju_subject_engine:install:migrations
$ rake db:migrate
$ rake assets:precompile # production環境の場合

検索サーバとWebサーバを再起動してください。

gemを使用せずにインストールしている場合

$ cd enju_leaf
$ git pull origin master

app/controllers/application_controller.rbを編集します。以下の行を追加します。

  private
  def mobylette_options
    @mobylette_options ||= ApplicationController.send(:mobylette_options).merge(
      {
        :skip_xhr_requests => false
      }
    )
  end

config/application.ymlを削除します。

$ mv config/application.yml config/application.yml.orig

以下のコマンドを実行します。

$ bundle
$ rake enju_biblio_engine:install:migrations
$ rake enju_subject_engine:install:migrations
$ rake db:migrate
$ rake assets:precompile

検索サーバとWebサーバを再起動してください。

1.0.5.rc1以前からのアップデート

1.0.5.rc1以前からのアップデートには、上記の手順に加えて、以下の手順を実行してください。

  1. node.jsをインストールします。

  2. publicディレクトリのバックアップを必要に応じて取ります。

$ cp -a public public_orig
  1. config/application.rb の config.assets.enabled を false から true に変更します。
config.assets.enabled = true
  1. config/environments/production.rb を更新します。メールの送信設定などに変更を加えている場合、コピー後の production.rb に改めて追加します。
$ cp config/environments/production.rb config/environments/production.rb.orig
$ cp config/environments/production.rb.sample config/environments/production.rb
  1. 配信用のCSS・JavaScript・画像ファイルを作成します。
$ rake assets:precompile
  1. アップデート用のスクリプトを実行します。
$ rake enju:update:to_1_0_5 RAILS_ENV=production
$ rake enju:copy_config_files
  1. 定時に実行される処理(cronタスク)を再設定します。
$ cp config/schedule.rb.sample config/schedule.rb
$ vi config/schedule.rb
# line 22. change the path
# eg. set :path, '/home/nabeta/enju_leaf'
set :path, '/path/to/enju_leaf'
$ whenever --update-crontab

1.1.0.beta1, beta2からのアップデート

設定ファイルをコピーします。

$ git pull origin master
#rubyやrailsのバージョンが異なる場合、Gemfileのバージョンも編集する
#あわせて bundle update を行う
$ rake enju:copy_config_files
#Resque::Helpers will be gone with no replacement in Resque 2.0.0. は無視する

libicu-devをインストールします。

$ sudo yum install libicu-dev # Debian/Ubuntuの場合
$ sudo yum install libicu-devel # Centos/Fedoraの場合
$ brew install icu4c # OSXの場合
$ gem install charlock_holmes --with-icu-dir=/usr

その後は通常のアップデートの手順と同じです。