Gemfileをさらしてみる
前置きです。開発に超便利なgemあるよーって記事ではございません。
SpreeのCSV Import/Exportエクステンションで
datashiftという超素晴らしいgemをbundle installしました。
https://github.com/autotelik/datashift
ただ、最新版が自分の環境で動かない。
入らなかったり、入っても動かなかったりすると一応issueとかgoogle groupsを見にいくのですが、自分の使っているものが必ずしもEdgeとは限りません。
なるべく最新にするようにメンテしていれば、なるべく回避できるかも、と言ってしまえばそれまでですが。
でバージョンを下げると入りました。
I think deeply each Gemfile is one of the most important property of living lib-versioning.
なんかね。
このバージョンだとこれが動くよーっていうことがわかるってありがたい話かなと思いまして。
Bundlerはめちゃめちゃ素晴らしい仕組みだけど、もう少し先の、生きた情報といいますか。
なので、ほかのプロジェクトのgemファイルとかめちゃ興味あります。
gemファイルSNSとかあればいいのに(謎)。
ということでごちゃごちゃと。
source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.0.4' # Use sqlite3 as the database for Active Record gem 'mysql2' # Use SCSS for stylesheets gem "sass-rails", "~> 4.0.2" # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # Use CoffeeScript for .js.coffee assets and views gem 'coffee-rails', '~> 4.0.0' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', '0.11.0beta8' gem 'therubyracer', platforms: :ruby # Use jquery as the JavaScript library gem 'jquery-rails' # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem 'turbolinks' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 1.2' group :doc do # bundle exec rake doc:rails generates the API under doc/api. gem 'sdoc', require: false end # Use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.1.2' # Use unicorn as the app server # gem 'unicorn' # Use Capistrano for deployment # gem 'capistrano', group: :development # Use debugger # gem 'debugger', group: [:development, :test] gem 'spree', '2.1.4' gem 'spree_gateway', :git => 'https://github.com/spree/spree_gateway.git', :branch => '2-1-stable' gem 'spree_auth_devise', :git => 'https://github.com/spree/spree_auth_devise.git', :branch => '2-1-stable' #gem 'rails-i18n' group :development do # ER図出力ライブラリ gem 'rails-erd' gem 'railroady' # 簡易プロファイラ # 画面左上に測定値 gem 'rack-mini-profiler' # rails pre-loader # gem "spring" # passenger auto-restart monitor # gem 'guard-passenger' # デプロイ # gem 'capistrano' # gem 'capistrano-ext' # gem 'capistrano-rails' # gem 'capistrano-rbenv', github: 'capistrano/rbenv', branch: 'master' gem 'better_errors' end gem 'spree_i18n', github: 'spree/spree_i18n', branch: '2-1-stable' gem 'activemerchant' , github: 'Shopify/active_merchant' gem 'activeadmin', :github => "gregbell/active_admin", branch: 'master' gem 'newrelic_rpm' gem 'log4r' gem 'libxml-ruby' # recommend engine gem 'redis' gem 'hiredis' gem 'recommendify' # spree extension gem # official gems gem 'spree-bank-transfer' gem "spree_product_zoom", :git => "git://github.com/spree/spree_product_zoom.git", branch: '2-1-stable' gem 'spree_editor', github: 'spree/spree_editor', branch: '2-1-stable' #gem 'datashift', '~> 0.14.0' gem 'datashift', '~> 0.13.0' gem 'datashift_spree' # local gems # #
コントローラに含まれるメソッドを確認する
ある程度開発を進めていくと、時々、メソッドをどこにやったか直ぐに思い出せなくなる健忘症の僕です
irb(main):001:0> ApplicationController.action_methods => #<Set: {"authenticate_master_user!", "current_master_user", "set_debug_mode", "to_sjis", "to_utf8", "_convert_charset", "spree_login_path", "spree_signup_path", "spree_logout_path"}>
irb(main):002:0> Spree::BaseController.action_methods => #<Set: {"spree_responders", "spree_responders=", "_callback_before_48", "ssl_allowed_actions", "ssl_allowed_actions?", "ssl_allowed_actions=", "ssl_supported?", "spree_login_path", "spree_signup_path", "spree_logout_path", "permitted_attributes", "permitted_address_attributes", "permitted_checkout_attributes", "permitted_image_attributes", "permitted_inventory_unit_attributes", "permitted_line_item_attributes", "permitted_option_type_attributes", "permitted_option_value_attributes", "permitted_payment_attributes", "permitted_product_attributes", "permitted_product_properties_attributes", "permitted_property_attributes", "permitted_return_authorization_attributes", "permitted_shipment_attributes", "permitted_source_attributes", "permitted_stock_item_attributes", "permitted_stock_location_attributes", "permitted_stock_movement_attributes", "permitted_taxon_attributes", "permitted_taxonomy_attributes", "permitted_user_attributes", "permitted_variant_attributes", "permitted_order_attributes", "build_searcher", "unauthorized", "store_location", "try_spree_current_user", "redirect_back_or_default", "ensure_api_key", "authenticate_master_user!", "current_master_user", "set_debug_mode", "spree_path", "spree_url", "rails_info_properties_path", "rails_info_properties_url", "rails_info_routes_path", "rails_info_routes_url", "rails_info_path", "rails_info_url", "spree_current_user"}>
なので
action_methods
という名前だけ覚えました。
active_adminのassets precompileがこけた
production環境でprecompileしようとしてこけた。
bundle exec rake assets:precompile RAILS_ENV=production rake aborted! NoMethodError: undefined method `environment' for nil:NilClass (in /home/m__z/public_html/railsapp/spree/app/assets/stylesheets/active_admin.css.scss) /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-rails-4.0.1/lib/sass/rails/importer.rb:84:in `evaluate' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-rails-4.0.1/lib/sass/rails/importer.rb:70:in `engine_from_path' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-rails-4.0.1/lib/sass/rails/importer.rb:35:in `find' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/import_node.rb:54:in `block in import' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/import_node.rb:53:in `each' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/import_node.rb:53:in `import' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/import_node.rb:28:in `imported_file' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/import_node.rb:37:in `css_import?' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:217:in `visit_import' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:37:in `visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:100:in `visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:53:in `block in visit_children' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:53:in `map' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:53:in `visit_children' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:121:in `with_environment' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:108:in `visit_children' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:37:in `block in visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:128:in `visit_root' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/base.rb:37:in `visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:100:in `visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/visitors/perform.rb:7:in `visit' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/tree/root_node.rb:20:in `render' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/engine.rb:315:in `_render' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sass-3.2.14/lib/sass/engine.rb:262:in `render' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/sass_template.rb:53:in `evaluate' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/context.rb:197:in `block in evaluate' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/context.rb:194:in `each' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/context.rb:194:in `evaluate' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/processed_asset.rb:12:in `initialize' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:374:in `new' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:374:in `block in build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:395:in `circular_call_protection' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:373:in `build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:94:in `block in build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/caching.rb:58:in `cache_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:93:in `build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:287:in `find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:61:in `find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/bundled_asset.rb:16:in `initialize' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:377:in `new' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:377:in `build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:94:in `block in build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/caching.rb:58:in `cache_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:93:in `build_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/base.rb:287:in `find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/index.rb:61:in `find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:211:in `block in find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:257:in `benchmark' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:210:in `find_asset' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:119:in `block in compile' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:118:in `each' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/sprockets/manifest.rb:118:in `compile' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-2.12.1/lib/rake/sprocketstask.rb:146:in `with_logger' /home/m__z/public_html/railsapp/spree/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define' Tasks: TOP => assets:precompile (See full trace by running task with --trace)
ためしにActiveAdminのcssとjsを削除するとSpreeのcssとjsで発生した。
結論として、ActiveAdminのせいではなく、sass-railsのバージョンを上げることで直った。
gem 'sass-rails', '~> 4.0.0'
これを以下に修正
gem 'sass-rails', '4.0.2'
参考リンク | undefined method `environment' for nil:NilClass #3005
https://github.com/gregbell/active_admin/issues/3005
deface のターゲットマッチの確認方法
こんな方法があったのでメモ
$ bundle exec rake deface:test_selector['spree/layouts/spree_application','erb[loud]:contains("spree/shared/header")'] Querying 'spree/layouts/spree_application' for 'erb[loud]:contains("spree/shared/header")' ---------------- Match 1 ---------------- <%= render :partial => 'spree/shared/header' %>
thanks!
http://stackoverflow.com/questions/20547118/unable-to-override-an-existing-partial-using-deface
spree rails4.0.2 > rails4.0.4 アップデート
おはようございます。
spreeは2-1-stableを愛用しているm__zです。
今回はアップデート手順です。
1) Gemfile の rails を 4.0.4 に書き換えます
$ bundle update rails
2) spreeのgemをアップデート
Gemfile の spree は以下のように。
gem 'spree' , :git => 'https://github.com/spree/spree.git', :branch => '2-1-stable'
$ bundle update spree
以上でgem関連はアップデートが完了します。
DBスキーマの差分については
$ bundle exec rake railties:install:migrations
しますと
Copied migration 20140407224213_add_deleted_at_to_spree_prices.spree.rb from spree Copied migration 20140407224214_add_auto_capture_to_payment_methods.spree.rb from spree Copied migration 20140407224215_default_variant_weight_to_zero.spree.rb from spree Copied migration 20140407224216_add_translations_to_option_value.spree_i18n.rb from spree_i18n
とマイグレーションファイルがappフォルダにコピーされてきます。最高です。あとは
$ bundle exec rake db:migrate
でOK
mysqlのダンプ俺メモ
mysqldump --user=USER --password=PASSWORD --single-transaction --extended-insert=false --default-character-set=utf8 --order-by-primary "mydb" "zipcode" > "mydb_dbbk.sql"
-
- order-by-primary PKまたは最初のユニークインデックスでソート(Dump each table's rows sorted by its primary key, or by its first unique index)
- extended-insert=true/false 1行のINSERT文に複数のvaluesを含む/含まない
- single-transaction テーブルをロックせず、トランザクションの範囲でバックアップ
PKでソートするかしないかで速度的に雲泥の差が出るようです。
あるいはこちらのほうが速い
mysqlコンソール上で INTO OUTFILEする
export
SELECT * FROM `DB名`.`TABLE名` ORDER BY id asc INTO OUTFILE "/tmp/data.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';
import
LOAD DATA LOCAL INFILE "C:/Users/XXX/Documents/MySQL/data.csv" INTO TABLE table名 FIELDS TERMINATED BY ',' ENCLOSED BY '"';