AD:
税込みの値段から、GSTの額を計算します。
GSTは10%です in 201802の時点で
|
require 'bigdecimal' - original_price = 265.00 - tax = 1.1 - before_tax = (BigDecimal((original_price/tax).to_s).ceil(2).to_f) - gst = (BigDecimal((original_price - before_tax).to_s).floor(2).to_f) |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
rbenvを使ってRubyの環境を構築していると思うのですが、
最新のRubyのVersionを入れたい場合、始めにrbenvのUpgradeをしたほうがより最新のものが入ってきますので、その方法をメモしておきます。
|
brew update brew upgrade rbenv ruby-build |
これで終わりです。
あとは、下記のコマンドで最新のRubyの一覧がでてきます。
Installはこんな感じですね。
|
rbenv install 2.2.3 rbenv global 2.2.3 rbenv rehash ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14] |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
routes.rbにこんな感じでadminのNamespaceを設定します。
|
namespace :admin do resources :countries end |
フォルダ関連の作業
ControllerとViewsはadminフォルダに入れてください
|
./controllers/ ./admin/ countries_controller.rb ./views/ ./views/ ./countries/ ./index.html.hml... |
ファイルの記述の変更
ControllerにNamespaceをつけてあります。Admin::ですね。
|
class Admin::CountriesController < ApplicationController before_action :set_country, only: [:show, :edit, :update, :destroy] |
Viewをscaffoldで作っていた場合は下記のように変更します。
|
= link_to 'Show', [:admin, country] = link_to 'Edit', edit_admin_country_path(country) = link_to 'Destroy', [:admin, country], :method => :delete, :data => { :confirm => 'Are you sure?' } = link_to 'Back', admin_definitions_path |
formも変更が必要があります。
|
= form_for [:admin, @country] do |f| |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 3 | Total: 4 | Feedly: 0
AD:
RailsのTaskでレポートを生成するように作っているのですが、スケジュールで毎週動かすようにしていたのですが、どうもうまくいっていないようなので、調べてみたら、下記のエラーになっていました。
プライマーキーの最大値が更新されていないようです。
|
rake aborted! PG::Error: ERROR: duplicate key value violates unique constraint "reports_pkey" DETAIL: Key (id)=(2) already exists. |
対処方法
Railsが独自のPostgreSQLシーケンスをつかっているかららしいです。
なので、SQLで最大値をセットしてあげます。これで問題なく動くようになりました。
|
SELECT setval('reports_id_seq', (SELECT max(id) FROM reports)); |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 4 | Total: 4 | Feedly: 0
AD:
Vagrantなので、rails sなどでrails serverを立ち上げていて、ネットワークなどが変わるとVagrantから抜けて、rails sは残ったままになるのですが、再度vagrant sshしてからrails sをしても前のサーバが生きているので、立ち上げられなくなります。
|
$ rails s A server is already running. Check /var/www/html/hoge/tmp/pids/server.pid. Exiting |
対処方法
3000 portを使っているプロセスを見つけてきて、プロセスをkillしてしまいます。
|
$ lsof -wni tcp:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 5006 vagrant 11u IPv4 22930 0t0 TCP *:3000 (LISTEN) $ kill 5006 |
もっと賢いやり方があるような気がするのですが、ご存知の方は教えてください。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
Rails4から導入されたルーティングの一覧を確認するページのURLをいつも忘れるので、メモしておきます。
覚えておくと便利ですね。
http://localhost:3000/rails/info/routes
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
Rails4からMass Assignment対策として、StrongParametersがRailsの中の標準ライブラリと組み込まれるようになりました。
Deviceを使ってユーザ認証を導入、独自フィールドを設置したのですが、StrongParametersでそのフィールドを許可の対象にしないとUnpermitted parametersとしてエラーがでます。
せっかく調べたので、その設定をメモしておきたいと思います。
やったこと
今回の環境
– Rails 4.2.1
– Devise 3.2.1
こういう時はドキュメントを読むのが一番ですね。しっかりStrongParametersについて書いてありますね。
http://www.rubydoc.info/github/plataformatec/devise/master/frames#Strong_Parameters
まずこの3つのアクションがあることを理解しておきます。
- sign_in (Devise::SessionsController#create) – Permits only the authentication keys (like email)
- sign_up (Devise::RegistrationsController#create) – Permits authentication keys plus password and password_confirmation
- account_update (Devise::RegistrationsController#update) – Permits authentication keys plus password, password_confirmation and current_password
その後は各種アクションに対して、どのパラメータを許可するかを追加します。
ApplicationControllerに書くのもいいかもしれませんが、将来の拡張性などを考えるとモデルに対してコントローラーを作るのが汎用性が高そうです。
registrations_controllerをUsersフォルダ内に作成しました。
|
# app/controllers/users/registrations_controller.rb class Users::RegistrationsController < Devise::RegistrationsController before_filter :configure_permitted_parameters protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name) } devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:first_name, :last_name) } devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name) } end end |
routes.rbに明示的にコントローラーを指定する
|
devise_for :users, :controllers => { :registrations => "users/registrations" } |
以上で追加したフィールドに情報を追加できるようになりました。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 2 | Pocket: 0 | Total: 2 | Feedly: 0
AD:
環境
Ruby 2.2.1
Rails 4.2.1
Ubuntu 14.04
でcapybara-webkitをインストールしようとしたら下記のエラーがでました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
qmake: could not find a Qt installation of '' *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/home/vagrant/.rbenv/versions/2.2.1/bin/$(RUBY_BASE_NAME) --with-gl-dir --without-gl-dir --with-gl-include --without-gl-include=${gl-dir}/include --with-gl-lib --without-gl-lib=${gl-dir}/lib --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib Command 'qmake ' failed extconf failed, exit code 1 |
解決方法
エラー通りqmakeがないので、入れてあげて解決です。
|
sudo apt-get install qt5-default libqt5webkit5-dev |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
最新のプロジェクトをVagrant Ruby 2.2.1 & Ruby on Rail 4.2.1の最新安定バージョンで開発を開始いたのですが、Vagrantの内のRails Appにhttpでアクセスがうまくできなかったのでその際のメモです。
状況
VagrantのUbuntuにrbenvでRubyをインストールしております。
各種Appには、/etc/hostsに独自ドメインを指定してアクセスしております。
|
$ sudo vi /etc/hosts 192.168.33.10 dev.domain |
アクセスは下記のようなドメインでやっております。
http://dev.domain:3000
解決方法
いきなり解決方法です。
|
$ rails s -b 0.0.0.0 => Booting Puma => Rails 4.2.1 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Puma 2.11.1 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://0.0.0.0:3000 |
問題なのは、Rails4.2のbindsが0.0.0.0が127.0.0.1になっているので、-bで指定して立ち上げることが解消できます。
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
|
Post.new(title: "Title is here",body: "Body is here") Post.id = 1000 Post.save |
ちなみにこれじゃダメだった
|
Post.new(id: 1000, title: "Title is here",body: "Body is here") Post.save |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0