ここ最近Railsで本当は何を作りたいかを自問していました。ただ闇雲にRuby On Railsを使うよりも、自分にとって有意義なプロダクトを作りたいなと。
そこでRuby On Railsで作りたいなと思うのは、まず先にECサイト。これを作らないと今の自分の正直なところを抜け出せないなと実感してきました。Ruby on RailsでECサイトは難しいと言われがちかもしれませんが、実際にあるのも事実なので、ぜひ作ってみたいと心に決めていました。
次に作りたいと思っているのは、フィリピン出身である為、少しでも日本とフィリピンの架け橋になれたらと思い、二つの国を結ぶコミュニティサイトを作っていきます。
そこで問題となるのは、どうやって自分の作ったプロダクトに”マネタイズ”するか。ECサイトであれば、必然と物を売る為の出来上がりとなると思いますが、ただ単純売るだけの商売にならず、そこから何か特有のビジネスを加味できるように努めなくてはならない。
日本とフィリピンをつながぐコミュニティサイトでは、”マネタイズ”はどのように行うか。Facebookのようなものにするか。あるいはTwitterのようにするか。ただ真似るだけでは面白くなく、利用もしてくれません。そしてたとえ利用して頂いても、そこからどうやって収入につなげるか。
- アカウントを無料登録するか。
- アカウントを有料登録するか。
- 1をしつつ、広告収入源を得るか
- 2をしつつ、なおかつ広告収入を得るか。
他にも方法はあると思いますが、何しろUserfirst出なくては利用して頂ける人も出てきません。使い辛かったら使用したくありませんよね。
エンジニアを自分の作り出したビジネスから、収入源を得ることができるので、 そういった面では本当に夢がある職種の一つだと実感しています。
試行錯誤でgem solidusを使って、一番最初の実装までやってみます。参考までにして頂けたら幸いです。
まず大元のGithubで公開されているものから、参考にさせて頂きました。
GitHub – solidusio/solidus: Solidus, Rails eCommerce System
ここの大前提として、Imagemagick をインストールすることが必要だとのこと。
imagemagick自体solidusだけに有効という訳ではなく、何かと必要になってくるので、必要性は高いです。インストールして損はないですので、ぜひこの機会にインストールしてることをお勧めいたします。
ECサイト用のディレクトリを作り、その後にbundle init
まず先に一番最初の処理を行います。
この際にこの前お伝えしたように、他のプロジェクトファイルを干渉しないように、ファイルを工面しないといけません。復習と参考までに過去の記事を!
ここではこのECサイトのプロジェクト名を”shop”とします!
$ git init
Initialized empty Git repository in /Users/daddy/Documents/shop/.git/
このコマンドでgemfileが生成されますので、編集致します。Gemfileにての# gem “rails”はコメントアウトしないで、’solidus’と’solidus_auth_devise’記載。 # frozen_string_literal: true
source “https://rubygems.org” # gem “rails”
gem ‘solidus’
gem ‘solidus_auth_devise’

ここまでは順調にいけると思います。
bundle installしてgemをインストールする!
上記1の手順の後に、bundle installしてgemをインストールします。コマンドはお使いの環境によって違いますが、ここではひとまず$ bundle install –path vendor/bundleをコマンドします。
$ bundle install –path vendor/bundle
Fetching gem metadata from https://rubygems.org/…………
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies…
Fetching rake 12.0.0
Installing rake 12.0.0
$ bundle install –path vendor/bundle のコマンドで、Ruby on Railsをインストールします。この時gemfileの中では、railsはコメントアウトしたままです。ecサイト作成用の”solidus”で適用されるrailsがインストールされます。
rails newでアプリケーションを作成
2.までの手順の後にrails newをしなくてはなりません。なぜかというと、ここではまだファイルの中ではアプリケーションがないからです。
rails newをしてアプリケーションを作成しましょう。
ひとまずここでのアプリケーション名を、”ec”とします。
$ bundle exec rails new ec -B -d postgresql
$ bundle exec rails new ec -B -d postgresql
今後Herokuなどにデプロイすることも考慮に入れて、DBをpostgresqlに指定します。-Bは”–skip-bundle” の意味で、–skip-bundleを”-B”で省略しています。
bundler環境を削除して、下準備を終える。
$ rm -f Gemfile
$ rm -f Gemfile.lock
$ rm -rf .bundle
$ rm -rf vendor
$ rm -f Gemfile
:shop daddy$ rm -f Gemfile.lock
:shop daddy$ rm -rf .bundle
:shop daddy$ rm -rf vendor
bundler環境を一掃し、Railsアプリケーションの下準備の作成は完了です!
gemをインストールする。solidusの記入を忘れないこと!
作成した アプリケーションに進みgemのインストールをします。
$ cd ec
$ cd ec/
ただ先ほどrails newで作成されたアプリケーション内のgemfileでは、
記入したgem ‘solidus’,gem’solidus_auth_devise’は記載がないので、改めて記載する必要があります。
gem ‘solidus’
gem ‘solidus_auth_devise’

上記gemを記入後、
$ bundle install --path vendor/bundle
このコマンドで、gemのインストール。
$ bundle install –path vendor/bundle
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock –add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/………
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies…
おっとちょっと解決が必要な項目が出ましたね。
bundle installの後半にも、
Fetching solidus_api 2.3.0
Installing solidus_api 2.3.0
Fetching solidus_sample 2.3.0
Installing solidus_sample 2.3.0
Fetching solidus_auth_devise 1.6.4
Installing solidus_auth_devise 1.6.4
Fetching solidus_backend 2.3.0
Installing solidus_backend 2.3.0
Fetching solidus_frontend 2.3.0
Installing solidus_frontend 2.3.0
Fetching solidus 2.3.0
Installing solidus 2.3.0
Bundle complete! 18 Gemfile dependencies, 125 gems now installed.
Gems in the group production were not installed.
Bundled gems are installed into ./vendor/bundle.
Post-install message from paperclip:
##################################################
# NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
##################################################
Paperclip is now compatible with aws-sdk >= 2.0.0.
If you are using S3 storage, aws-sdk >= 2.0.0 requires you to make a few small
changes:
* You must set the `s3_region`
* If you are explicitly setting permissions anywhere, such as in an initializer,
note that the format of the permissions changed from using an underscore to
using a hyphen. For example, `:public_read` needs to be changed to
`public-read`.
For a walkthrough of upgrading from 4 to 5 and aws-sdk >= 2.0 you can watch
http://rubythursday.com/episodes/ruby-snack-27-upgrade-paperclip-and-aws-sdk-in-prep-for-rails-5
Post-install message from handlebars_assets:
Remember to rake assets:clean or rake assets:purge on update! this is required because of handlebars updates
The latest bundler is 1.15.4, but you are currently running 1.15.1.
To update, run `gem install bundler`
ともかく最初に、$ gem install bundlerを実行。
$ gem install bundler
Fetching: bundler-1.15.4.gem (100%)
Successfully installed bundler-1.15.4
Parsing documentation for bundler-1.15.4
Installing ri documentation for bundler-1.15.4
Done installing documentation for bundler after 5 seconds
1 gem installed
solidus用に必要なのインストールする
上記項目のあとに、
$ bundle exec rails generate spree:install
$ bundle exec rails generate solidus:auth:install
$ bundle exec rails railties:install:migrations
$ bundle exec rails db:migrate
が必要なのですが、rubyのバージョンを指定されたので、
$ bundle exec rails generate spree:install
RubyDep: WARNING: Your Ruby is outdated/buggy.
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
RubyDep: WARNING: (To disable warnings, see:http://github.com/e2/ruby_dep/wiki/Disabling-warnings )
ともかく$ rbenv install 2.3.1でバージョンをインストール。rubyのインストールは少し時間がかかります。およそ5分から10分ぐらいですかね。
$ rbenv install バージョン指定でそのrubyのバージョンをインストールできます。
$ rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
Installing ruby-2.3.1…
Installed ruby-2.3.1 to /Users/daddy/.rbenv/versions/2.3.1
端末にどのバージョンがインストールされているかを、
$ rbenv versionsで確認。
$ rbenv versions
system
2.2.3
* 2.3.0 (set by /Users/hito/.rbenv/version)
2.3.1
今回は2.3.1を指定します。
$rbenv global 2.3.1で指定し、
$ rbenv global 2.3.1
$rbenv rehash 2.3.1で切り替える。
$ rbenv rehash 2.3.1
$ rbenv versionsで確認してみましょう。
$ rbenv versions
system
2.2.3
2.3.0
* 2.3.1 (set by /Users/daddy/.rbenv/version)
再び
$ bundle exec rails generate spree:install
rbenv: bundle: command not found
The `bundle’ command exists in these Ruby versions:
2.2.3
2.3.0
$ bundle exec rails generate spree:installするとbundleが無いよと怒られる。
バージョン指定しないで、$ rbenv exec gem install bundlerをコマンド
$ rbenv exec gem install bundler
Fetching: bundler-1.15.4.gem (100%)
Successfully installed bundler-1.15.4
Parsing documentation for bundler-1.15.4
Installing ri documentation for bundler-1.15.4
Done installing documentation for bundler after 4 seconds
1 gem installed
再び$ bundle exec rails generate spree:installをコマンド。
また怒られる。どうやらpostgresqlのデータベースが無いとのこと。
$ bundle exec rails generate spree:install
/Users/dady/Documents/shop/ec/vendor/bundle/ruby/2.3.0/gems/activerecord-5.1.3/lib/active_record/connection_adapters/postgresql_adapter.rb:699:in `rescue in connect’: FATAL: database “ec_development” does not exist (ActiveRecord::NoDatabaseError)
$ bundle exec rails db:create をコマンド
$ bundle exec rails db:create
Created database ‘ec_development’
Created database ‘ec_test’
$ bundle exec rails generate spree:installを、今度こそと思いコマンド。
$ bundle exec rails generate spree:install
create config/initializers/spree.rb
append public/robots.txt
create vendor/assets/javascripts/spree/frontend
create vendor/assets/javascripts/spree/backend
create vendor/assets/stylesheets/spree/frontend
create vendor/assets/stylesheets/spree/backend
create vendor/assets/images/spree/frontend
create vendor/assets/images/spree/backend
create vendor/assets/javascripts/spree/frontend/all.js
create vendor/assets/stylesheets/spree/frontend/all.css
create vendor/assets/javascripts/spree/backend/all.js
create vendor/assets/stylesheets/spree/backend/all.css
create app/overrides
append db/seeds.rb
copying migrations
creating database
rake db:create
Database ‘ec_development’ already exists
Database ‘ec_test’ already exists
running migrations
rake db:migrate VERBOSE=false
generating cartons
(2ms)
linking inventory units to cartons
(1ms)
loading seed data
rake db:seed
おーいい感じに。
後半では、
Loaded Assets samples
Loaded Addresses samples
Loaded Stores samples
Loaded Orders samples
Loaded Payments samples
Loaded Reimbursements samples
insert config/routes.rb
**************************************************
We added the following line to your application’s config/routes.rb file:
mount Spree::Core::Engine, at: ‘/’
**************************************************
Solidus has been installed successfully. You’re all ready to go!
Enjoy!
Solidusは無事にインストールされ、エンジョイ!との事!!
Solidusを楽しもう!!イントロ完了まで後少し!
6.の続きをする。
$ bundle exec rails generate spree:installの後の、
$ bundle exec rails generate solidus:auth:install
$ bundle exec rails generate solidus:auth:install
create config/initializers/devise.rb
run bundle exec rake railties:install:migrations FROM=solidus_auth_devise from “.”
run bundle exec rake db:migrate from “.”
メッセージでは、
bundle exec rails railties:install:migrationsをコマンドしろとのこと。
その後に、
bundle exec rails db:migrateしてねと、丁寧にメッセージが残っています。
早速サーバーを立ち上げてアプリケーションを確認。
おなじみの$rails s
$ rails s
rbenv: rails: command not found
The `rails’ command exists in these Ruby versions:
2.2.3
2.3.0
おっと。新しくインストールしたrbenv2.3.1にrailsが入っていないよって怒られる。
$rails -vで確認。
$ rails -v
Rails 5.1.3
最新版になってしまっているが、rails 5.13が入っている。
$rails sでサーバー起動。
$ rails s
=> Booting Puma
=> Rails 5.1.3 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode…
* Version 3.10.0 (ruby 2.3.1-p112), codename: Russell’s Teapot
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

localhost:3000で確認して、
上記の写真で確認できれば、もうsolidusのイントロは完了だ!!
git initをしてgithubへ
今後をこれから開発するために、gitにあげよう。
$git init
$git add -Aでステージングへ。
ステージングに上げる前に、.gitignoreファイルの編集を忘れずに。
$”git commit -m”でコマンド。
githubで新しいレポジトリを作成し、
$git push コピーしたSSHプロトコルURL master
$ git push git@github.com:アカウント名/レポジトリ名.git master
Counting objects: 632, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (546/546), done.
Writing objects: 100% (632/632), 2.01 MiB | 974.00 KiB/s, done.
Total 632 (delta 79), reused 0 (delta 0)
remote: Resolving deltas: 100% (79/79), done.
To github.com:アカウント名/レポジトリ名.git
* [new branch] master -> master
エンジニアは人の夢を叶える!
エンジニアはちょっと前まで、オタクみたいな感じで距離を置かれたこともありました。ただどうでしょうか。人々の暮らしを豊かにしているのは、エンジニアの力があってこそじゃないでしょうか。
今日では、地球の裏側までインターネット回線があれば、ほぼ無料でテレビ電話ができます。Facebookを利用すれば、たとえ家族や友達、親戚と距離を離れて暮らそうが、今現在の状況を写真など、伝えることができます。
今回railsでECサイトを作ることをお伝えしましたが、物を販売する人がサイトを作ることができなければ、エンジニアが作るでしょう。そうやって人の可能性を広げて、提供できるのです。
まだまだ未熟ではありますが、今後も参考になれるような記事を精進して更新していきます。
今後ともどうぞ宜しくお願い致します。
4児パパ
Ruby On RailsはDive Into Codeで!
私はRailsをDive Into Codeというプログラミングスクールで学びました。

ここでのカリキュラムはRailsでの実践で使える基礎はみっちり教えてもらえます。しかも最初はCloud9でプログラミングのさわりから入りますので、プログラミングをする為の環境構築もしない為スムーズに学べます。
Rubyの基礎を学ぶ
Railsを動かすにはまずWebの基礎知識が必要です。
そしてRubyの基礎が重要になってきます。
この本は初心者にとても優しく書かれています。また少し先に進んだ学習者や実際の現場でも使えます。私も今でも参考にしている本です。
開発環境を整える
開発環境は頭をエンジニアを頭を悩ませる種の一つです。
さらにそこからローカル環境での開発に入りる為、実際の開発をする為実践力も学べます。
ここの代表の野呂さんはスパルタ的な面もありますが、とても熱い人で腹落ちするまで教えてくれます。深夜の1時過ぎまで質問に応答してもらってりしていました。
またここのメンターの人たちもとても親切で、丁寧に教えて頂けます。
Railsを独学で学ぶのもコスパはいいかも知れませんが、Dive into codeで学ぶのも最短です。ただ結局は自分で学ぶ必要があります。努力して物にしましょう。
合わせて読みたい記事
私自身4人の子供がいます。ですので、夏休みなどを利用して旅行などにも行きます。家族6人となると旅行費も結構かかりますが。苦笑
ただ6人揃うととてもにぎやかで楽しいものです。 旅行先の記事も合わせて読んで頂けましたら幸いです。
今後ともどうぞ宜しくお願い致します!
4児パパ
コメントを残す