ShootingStar: URLにプリフィックスが付くと動かなくなる件のまとめ

RailsのURLが「http://foo.bar.com/」じゃなくて「http://foo.bar.com/prefix」だったりするとうまく動かなかったりしたので、アドホックに修正。
バージョンは3.0.0。

設定ファイル

↓のようにdatabase.ymlに「prefix」を追加。

development:
  ...
  shooting_star:
    server:  storehouse.quickvps.net:13202
    shooter: druby://0.0.0.0:7123
    prefix:  /masudaitter

vendor/plugins/meteor_strike/lib/meteor_strike.rb

24〜33行目

      config['shooter'] ||= 'druby://localhost:7123'
      config['prefix'] ||= '' # <- 追加
      server = config['server'].kind_of?(Array) ?
        config['server'][rand(config['server'].length)] : config['server']
      shooting_star_uri = "#{server}/#{channel}"
      if config['random_subdomain'] && /[A-z]/ === server
        subdomain = (1..6).map{(rand(26)+?a).chr}.to_s
        shooting_star_uri = [subdomain, shooting_star_uri].join('.')
      end
      uri = url_for(:only_path => false).split('/')[0..2].join('/') + config['prefix']
                                                                 # ~~~~~~~~~~~~~~~~~~~~追加
      uid = options[:uid] ? CGI.escape(options[:uid].to_s) : ''

81〜83行目。プリフィックス関係ないと思うけど、なんでかエラーになった。

          var noflash = #{options[:noflash].to_json};
          if(noflash || typeof(flashVersion) == 'undefined' || flashVersion < 6){
                     # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~修正
            setTimeout(function(){ 

138〜149行目。

    def flash_tag(flash_vars)
      config = ActiveRecord::Base.configurations[RAILS_ENV]['shooting_star'] # <- 追加
      config['prefix'] ||= '' # <- 追加
      flash_code_base = ['http://fpdownload.macromedia.com/',
        'pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'].join('')
      swf_path = File.join(RAILS_ROOT, 'public/meteor_strike.swf')
      swf_timestamp = File.mtime(swf_path).to_i
      <<-"EOH"
      <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
       codebase="#{flash_code_base}" width="0" height="0"
       id="meteor_strike_#{@meteor_strike}">
      <param name="allowScriptAccess" value="sameDomain" />
      <param name="FlashVars" value="#{flash_vars}" />
      <param name="movie" value="#{config['prefix']}/meteor_strike.swf?#{swf_timestamp}" />
                               # ~~~~~~~~~~~~~~~~~~~追加
      <param name="menu" value="false" />

shooting_star-3.0.0/lib/shooting_star/server.rb

256〜258行目。

      assets = URI.parse(@params['execute'])
      #assets.path = '/javascripts/prototype.js'
      assets.path = '/masudaitter/javascripts/prototype.js'
                   # ~~~~~~~~~~~~~ 設定ファイルの読み込み方が分からなかったのでハードコーディング
      assets.query = assets.fragment = nil