LoginSignup
5
5

More than 5 years have passed since last update.

Create New Gem - webpay-scaffold

Posted at

Gem作成(webpay-scaffold)

  • ruby 2.0.0p247
  • Rails 4.0.0

雛形生成

cd ~/labo
bundle gem webpay-scaffold
----------
      create  webpay-scaffold/Gemfile
      create  webpay-scaffold/Rakefile
      create  webpay-scaffold/LICENSE.txt
      create  webpay-scaffold/README.md
      create  webpay-scaffold/.gitignore
      create  webpay-scaffold/webpay-scaffold.gemspec
      create  webpay-scaffold/lib/webpay/scaffold.rb
      create  webpay-scaffold/lib/webpay/scaffold/version.rb
Initializating git repo in /Users/shu/labo/webpay-scaffold
----------
cd webpay-scaffold

Gitリポジトリ作成/ファーストコミット

git add . && git commit -m "First commit"

GitHubリポジトリ作成

https://github.com/repositories/new

-----
Project Name
[ webpay-scaffold ]

Description (optional)
[ Scaffold for WebPay API. ]

 => Create repository
-----

GitHubリポジトリへプッシュ

git remote add origin git@github.com:shu0115/webpay-scaffold.git
git push -u origin master

GitHubリポジトリ

https://github.com/shu0115/webpay-scaffold

.gemspecの編集

vi webpay-scaffold.gemspec
  spec.description   = %q{Scaffold for WebPay API.}
  spec.summary       = %q{WebPay Scaffold}
  spec.homepage      = "https://github.com/shu0115/webpay-scaffold"

  # 〜

  spec.add_dependency "webpay"
  spec.add_dependency "rails_config"
git add . && git commit -m "Update gemspec"
git push origin master

Gem実装

lib/webpay/scaffold.rb

require "webpay/scaffold/version"
require 'rails/generators'
require 'webpay'
require 'rails_config'

module Webpay
  class ScaffoldGenerator < Rails::Generators::Base
    @@template_path = source_root File.expand_path( "../scaffold/templates", __FILE__ )

    def generate_scaffold
      ## config/initializers
      copy_file( "#{@@template_path}/initializers/web_pay.rb", "config/initializers/web_pay.rb" )

      ## db/migrate
      copy_file( "#{@@template_path}/migrate/create_payments.rb", "db/migrate/20010101000000_create_payments.rb" )
      copy_file( "#{@@template_path}/migrate/create_cards.rb", "db/migrate/20010102000000_create_cards.rb" )

      ## models
      copy_file( "#{@@template_path}/models/card.rb", "app/models/card.rb" )
      copy_file( "#{@@template_path}/models/payment.rb", "app/models/payment.rb" )
      copy_file( "#{@@template_path}/models/web_pay_connect.rb", "app/models/web_pay_connect.rb" )

      ## settings
      if File.exist?("config/settings.yml")
        content = "\n# WebPay API Key\n"
        content += "web_pay_api_key: 'test_secret_5ete0yfRC3g67ndfMm0kC1S9'\n"
        content += "web_pay_currency: 'jpy'\n"
        append_file( "config/settings.yml", content.force_encoding('ASCII-8BIT') )
      else
        copy_file( "#{@@template_path}/config/settings.yml", "config/settings.yml" )
      end
    end
  end
end

コミット/プッシュ

git add . && git commit -m "Update"
git push origin master

ローカルインストール

rake install
----------
minimum-omniauth-scaffold 0.0.1 built to pkg/minimum-omniauth-scaffold-0.0.1.gem.
minimum-omniauth-scaffold (0.0.1) installed.
----------

サンプルアプリインストール

cd ~/labo
rails new webpay_scaffold_sample
cd webpay_scaffold_sample
vi Gemfile
----------
# WebPay
gem 'webpay-scaffold', path: "~/labo/webpay-scaffold"
----------

※ローカルのGemをインストールした場合はローカルのGemの変更が自動反映される

gem uninstall webpay-scaffold
gem uninstall webpay
bundle install
----------
Installing webpay (2.0.2) 
Using webpay-scaffold (0.0.1) from source at ~/labo/webpay-scaffold 
----------
gem list webpay
----------
*** LOCAL GEMS ***

webpay (2.0.2)
----------
rails g -h
----------
Webpay:
  webpay:scaffold
----------
rails g webpay:scaffold
----------
      create  config/initializers/web_pay.rb
      create  db/migrate/20010101000000_create_payments.rb
      create  db/migrate/20010102000000_create_cards.rb
      create  app/models/card.rb
      create  app/models/payment.rb
      create  app/models/web_pay_connect.rb
      create  config/settings.yml
----------
  • ※生成戻し
rails destroy webpay:scaffold
----------
      remove  config/initializers/web_pay.rb
      remove  db/migrate/20010101000000_create_payments.rb
      remove  db/migrate/20010102000000_create_cards.rb
      remove  app/models/card.rb
      remove  app/models/payment.rb
      remove  app/models/web_pay_connect.rb
      remove  config/settings.yml
----------

既存アプリインストール

Gemfile

# WebPay
gem 'webpay-scaffold', path: "~/labo/webpay-scaffold"
bundle install
rails g webpay:scaffold
----------
      create  config/initializers/web_pay.rb
      create  db/migrate/20010101000000_create_payments.rb
      create  db/migrate/20010102000000_create_cards.rb
      create  app/models/card.rb
      create  app/models/payment.rb
      create  app/models/web_pay_connect.rb
      append  config/settings.yml
----------
rake db:migrate

app/controllers/top_controller.rb

class TopController < ApplicationController

  # トップ
  def index
    # 新しい課金の作成
    card = {
      number:    "4242424242424242",
      exp_month: "11",
      exp_year:  "2014",
      cvc:       "123",
      name:      "SHUN MATSUMOTO",
    }
    response, card = WebPayConnect.charge_create(100, card, 'プレミアム料')

    payment = Payment.create(response.merge(user_id: current_user.try(:id)))
    card    = Card.create(card.merge(user_id: current_user.try(:id)))

    # 課金情報の取得
    response = WebPayConnect.charge_retrieve('ch_gNP3TE4GB0bC6eX')

    # 課金リストの取得
    response = WebPayConnect.charge_list(5, 10)
  end
end

リリース

vi lib/webpay/scaffold/version.rb
----------
module Webpay
  module Scaffold
    VERSION = "0.0.1"
  end
end
----------
git add . && git commit -m "Release 0.0.1"
git push origin master
rake release
----------
webpay-scaffold 0.0.1 built to pkg/webpay-scaffold-0.0.1.gem.
Tagged v0.0.1.
Pushed git commits and tags.
Pushed webpay-scaffold 0.0.1 to rubygems.org.
----------
  • RubyGemsページ

https://rubygems.org/gems/webpay-scaffold

  • インストール確認
gem uninstall webpay-scaffold
----------
Successfully uninstalled webpay-scaffold-0.0.1
----------
gem install webpay-scaffold
----------
Fetching: webpay-scaffold-0.0.1.gem (100%)
Successfully installed webpay-scaffold-0.0.1
1 gem installed
----------
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5