Ruby on RailsにSpreeを入れてみた

railsでECサイトをやることになったのでspreeを使ってみました

公式の手順にしたがっています
http://guides.spreecommerce.com/developer/getting_started_tutorial.html#installing-rails

Ubuntu 14.04で試しています
rubyとrbenvがインストールされている状態にします
参考) Ubuntuにrubyを入れてみた
rubyは2.1.2を入れてました

$ mkdir spree
$ cd spree
$ bundle init
$ vim Gemfile
source “https://rubygems.org”
gem ‘rails’, ‘4.1.8’

と修正して
$ bundle update
$ bundle install

$ rails -v
4.1.8

でrails 入りました
imagemagickがいるというので
$ sudo apt-get install imagemagick

spree_cmdというgemを入れるといいらしいので
$ vim Gemfiles
gem ‘spree_cmd’
を追加
$ bundle install

railsプロジェクトを普通に作成
$ rails 4.1.8 new mystore

spreeをインストール
$ cd mystore
$ spree install –auto-accept

[code lang=text:text]
**************************************************
We added the following line to your application's config/routes.rb file:

mount Spree::Core::Engine, :at => '/'
**************************************************
Spree has been installed successfully. You're all ready to go!

Enjoy!

Warning: You're using Rubygems 2.0.3 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine –all` for better startup performance.
[/code]

Rubygemsが古いと言われますが、後回しにして

アクセス
http://localhost:3000/
spree

管理画面はこのアドレス
http://localhost:3000/admin
spree2

spree@example.com / spree123
でログインできます

jQueryでドット付きのid要素にアクセスする

HTMLで

[code lang=html:html]
<p id="f001.sub">あああ</p>
[/code]

のようなドット付きのIDがあってjQueryでアクセスしようと

[code lang=html:html]
$("#f001.sub").text();
[/code]

とすると取れない..

[code lang=html:html]
$("#f001\.sub").text();
[/code]

とすると取れるようです

キャッシュを無視してリロードする

ブラウザがWEBページや画像を記憶してリロードしてもコンテンツが変わらなかったりします
そのときにはキャッシュを無視してリロードするスーパーリロードというのが有効です

Google Chrome Ctrl + F5
Mozilla Firefox Ctrl + F5
Internet Explorer Ctrl + F5

あれ、全部同じだったっけ..これでいけるみたいです

これでもだめなら、ブラウザの設定からキャッシュをクリアして確認しましょう

Virtualboxの環境をコピーしたときのネットワーク設定

とある環境をまるごともらおうとVirualboxのvdiファイルをまるごともらいました

おそらく
$ VBoxManage clonevdi orgdisk.vdi copydisk.vdi
とかいうコマンドでコピーしたのだと思います

そこから自分のVirutualboxでネットワークにつなぐまでを記録します
Ubuntu 14.04のVirtualbox 4.3.10で試しました
GuestOSはCentos6です

VirtualBoxを立ち上げて、新規ボタンを押します
OSを選んで、名前をつけます
virtualbox1

メモリを選んで
virtualbox2

vdiを選択
virtualbox3

起動させます

$ ping google.co.jp
とかでネットワークがつながるか確認します
(つながったら終わりです)

だめなら、ネットワーク設定を変えます
(ゲストOSがCentosです)

VitualboxのほうでMacアドレスを控えておきます
追加したVMを選んで、設定ボタンを押します
virtualbox4

ネットワークをクリック、高度をクリックしてMACアドレスを控えておきます
virtualbox5

起動してるVM側に戻って
アダプタの情報がコピーされたままだとおもうので、今回の環境へ合わせます
$ vim /etc/udev/rules.d/70-persistent-net.rules

PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:15:ab:7f", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

MACアドレスを控えたものと合わせます
複数同じ設定ができてたらひとつにします(いるものだけにします)

ネットワーク設定も合わせます
$ /etc/sysconfig/newtork-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=08:00:27:15:AB:7F
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet

MACアドレスを控えたものと合わせます
eth1ならifcfg-eth1を修正してください

$ vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=localhost.localdomain
# GATEWAY=192.168.16.1

GATEWAYをかえます
今回はDHCPにしたのでコメントアウトしました

ネットワーク再起動
$ /etc/init.d/network restart

これで
ping google.co.jp
とかで通れば成功です

Virtualbox側の設定がおかしい?と思っていたら普通にCentosの設定でした