4児パパ プログラミングを学ぶ

プログラミングは未経験で30歳過ぎても学べる!

RailsでECサイトを作成!gemはsolidusで作成!

f:id:hitoiws:20170826131153p:plain

ここ最近Railsで本当は何を作りたいかを自問していました。ただ闇雲にRuby On Railsを使うよりも、自分にとって有意義なプロダクトを作りたいなと。

 

そこでRuby On Railsで作りたいなと思うのは、まず先にECサイト。これを作らないと今の自分の正直なところを抜け出せないなと実感してきました。Ruby on RailsでECサイトは難しいと言われがちかもしれませんが、実際にあるのも事実なので、ぜひ作ってみたいと心に決めていました。

 

次に作りたいと思っているのは、フィリピン出身である為、少しでも日本とフィリピンの架け橋になれたらと思い、二つの国を結ぶコミュニティサイトを作っていきます。

 

そこで問題となるのは、どうやって自分の作ったプロダクトに”マネタイズ”するか。ECサイトであれば、必然と物を売る為の出来上がりとなると思いますが、ただ単純売るだけの商売にならず、そこから何か特有のビジネスを加味できるように努めなくてはならない。

 

日本とフィリピンをつながぐコミュニティサイトでは、”マネタイズ”はどのように行うか。Facebookのようなものにするか。あるいはTwitterのようにするか。ただ真似るだけでは面白くなく、利用もしてくれません。そしてたとえ利用して頂いても、そこからどうやって収入につなげるか。

  1. アカウントを無料登録するか。
  2. アカウントを有料登録するか。
  3. 1をしつつ、広告収入源を得るか
  4. 2をしつつ、なおかつ広告収入を得るか。

他にも方法はあると思いますが、何しろUserfirst出なくては、利用して頂ける人も出てきません。

 

エンジニアを自分の作り出したビジネスから、収入源を得ることができるので、 そういった面では本当に夢がある職種の一つだと実感しています。

 

試行錯誤でgem solidusを使って、一番最初の実装までやってみます。参考までにして頂けたら幸いです。

 

 

 

 まず大元のGithubで公開されているものから、参考にさせて頂きました。

GitHub - solidusio/solidus: Solidus, Rails eCommerce System

ここの大前提として、Imagemagick をインストールすることが必要だとのこと。

imagemagick自体solidusだけに有効という訳ではなく、何かと必要になってくるので、必要性は高いです。インストールして損はないですので、ぜひこの機会にインストールしてることをお勧めいたします。

 

■目次

1.ECサイト用のディレクトリを作り、その後にbundle init

2.bundle installしてgemをインストールする!

3.rails newでアプリケーションを作成!

4.bundler環境を削除して、下準備を終える。

5.gemをインストールする。solidusの記入を忘れないこと!

6.solidus用に必要なのインストールする

7.Solidusを楽しもう!!イントロ完了まで後少し!

8.git initをしてgithubへ

9.エンジニアは人の夢を叶える!

10.Ruby On RailsはDive Into Codeで!v

 

1.ECサイト用のディレクトリを作り、その後にbundle init

まず先に一番最初の処理を行います。

  1. 作りたいディレクトリ下にファイルを作成。この際にこの前お伝えしたように、他のプロジェクトファイルを干渉しないように、ファイルを工面しないといけません。復習と参考までに過去の記事を!

     

    www.papa-programing.jp

     

  2. 私の場合、Document下にファイルを作成しました!ここではこのECサイトのプロジェクト名を"shop"とします!
  3. ディレクトリ下で$bundle init  

    $ 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'

    f:id:hitoiws:20170825191816p:plain

 ここまでは順調にいけると思います。

目次にもどる

 

2.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がインストールされます。

 

目次にもどる

 

3.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"で省略しています。

 

 

目次にもどる

 

4.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アプリケーションの下準備の作成は完了です!

 

目次にもどる

 

5.gemをインストールする。solidusの記入を忘れないこと!

3.で作成した アプリケーションに進みgemのインストールをします。

 $ cd ec

$ cd ec/

ただ3.でrails newで作成されたアプリケーション内のgemfileでは、

1.で記入したgem 'solidus',gem'solidus_auth_devise'は記載がないので、改めて記載する必要があります。

 

gem 'solidus'
gem 'solidus_auth_devise'

f:id:hitoiws:20170826112724p:plain

 

上記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

 

 

目次にもどる

 

6.solidus用に必要なのインストールする

 5.の項目のあとに、

$ 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は無事にインストールされ、エンジョイ!との事!!

 

目次にもどる

 

7.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

 

 

f:id:hitoiws:20170826131153p:plain

localhost:3000で確認して、

上記の写真で確認できれば、もうsolidusのイントロは完了だ!!

 

目次にもどる

 

8.git initをしてgithubへ。 

 今後をこれから開発するために、gitにあげよう。

$git init

$git add -Aでステージングへ。

ステージングに上げる前に、.gitignoreファイルの編集を忘れずに。

 

www.papa-programing.jp

 

$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

 

目次にもどる

 

9.エンジニアは人の夢を叶える!

エンジニアはちょっと前まで、オタクみたいな感じで距離を置かれたこともありました。ただどうでしょうか。人々の暮らしを豊かにしているのは、エンジニアの力があってこそじゃないでしょうか。

 

 

今日では、地球の裏側までインターネット回線があれば、ほぼ無料でテレビ電話ができます。Facebookを利用すれば、たとえ家族や友達、親戚と距離を離れて暮らそうが、今現在の状況を写真など、伝えることができます。

 

 

今回railsでECサイトを作ることをお伝えしましたが、物を販売する人がサイトを作ることができなければ、エンジニアが作るでしょう。そうやって人の可能性を広げて、提供できるのです。

 

まだまだ未熟ではありますが、今後も参考になれるような記事を精進して更新していきます。

今後ともどうぞ宜しくお願い致します。

 4児パパ 

目次にもどる

 

10.Ruby On RailsはDive Into Codeで

 私はRailsをDive Into Codeというプログラミングスクールで学びました。

diveintocode.jp

ここでのカリキュラムはRailsでの実践で使える基礎はみっちり教えてもらえます。しかも最初はCloud9でプログラミングのさわりから入りますので、プログラミングをする為の環境構築もしない為スムーズに学べます。

 

開発環境は頭をエンジニアを頭を悩ませる種の一つです。

 

 

さらにそこからローカル環境での開発に入りる為、実際の開発をする為実践力も学べます。

 

ここの代表の野呂さんはスパルタ的な面もありますが、とても熱い人で腹落ちするまで教えてくれます。深夜の1時過ぎまで質問に応答してもらってりしていました。

 

またここのメンターの人たちもとても親切で、丁寧に教えて頂けます。 

 

Railsを独学で学ぶのもコスパはいいかも知れませんが、Dive into codeで学ぶのも最短です。ただ結局は自分で学ぶ必要があります。努力して物にしましょう。

 

目次にもどる