DB migrationした後にrollbackしてくれるメソッド
- add_column
- add_index
- add_timestamps
- create_table
- create_join_table
- remove_timestamps
- rename_column
- rename_index
- rename_table
上記以外は、昔のまま self.up/downで実装すること。
http://blog.jnito.com/entry/20120326/1332767292
スネークケースへ> "camel_case". camelize=> "CamelCase"
> "CamelCase".underscore=> "camel_case"
$ bundle exec rake db:schema:load
$ rake db:schema:dump
gem 'lazy_high_charts
//= require highcharts/highcharts
//= require highcharts/highcharts-more
//= require highcharts/highstock
//= require_tree .
def sellView
@categories = ["apple", "orange", "banana", "strawberry", "melon", "lemon", "peach"]
@data = [40, 10, 20, 50, 30, 10, 60]
@h = LazyHighCharts::HighChart.new("graph") do |f|
f.chart(:type => "bar")
f.title(:text => "Sample bar")
f.xAxis(:categories => @categories)
f.series(:name => "Fruits",
:data => @data)
end
end
<%= high_chart("sample", @h) %>
<%= t("label_login") %>
I18n.t(:notice_saved, :text=>"xxx")
ja:
label_login: "ログイン"
:notice_saved: "%{text}を保存しました。"
irb(main):072:0> today = Time.now
=> 2013-10-10 16:22:31 +0900
irb(main):073:0> beginning_of_month = Time.now.beginning_of_month
=> 2013-10-01 00:00:00 +0900
irb(main):074:0> (today - beginning_of_month).to_i/1.day
=> 9
match '*path', :to => 'application#error_404'
def error_404
error_msg = "<h2>404 Not Found</h2><p>The page you were looking for doesn't exist.</p>"
render :text => error_msg, :status => 404
end
/opt/bundle/ruby/2.0.0/gems/execjs-2.0.1/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
from /opt/bundle/ruby/2.0.0/gems/execjs-2.0.1/lib/execjs.rb:5:in `<module:ExecJS>'
from /opt/bundle/ruby/2.0.0/gems/execjs-2.0.1/lib/execjs.rb:4:in `<top (required)>'
…
gem 'therubyracer'
gem 'execjs'
> {"a" => 1, "b" => 2}.symbolize_keys
=> {:a=>1, :b=>2}
>hash = {"a" => 1, "b" => 2}
=> {"a"=>1, "b"=>2}
> json = hash.to_json
=> "{\"a\":1,\"b\":2}"
> JSON.parse(json)
=> {"a"=>1, "b"=>2}
> JSON.parse(json, {:symbolize_names => true})
=> {:a=>1, :b=>2}
label_request: "要望"
label_test: "テストは %{count} 件です"
label_test2: "予定 %{field} 完了数"
# @count = 5 の場合
<%= t('label_test', :count=>@count)%>
<%= t('label_test2', :field=>t('request'))%>
$ rails g mailer WeeklyMailer
create app/mailers/weekly_mailer.rb
invoke erb
create app/views/weekly_mailer
invoke rspec
create spec/mailers/weekly_mailer_spec.rb
# app/mailers/weekly_mailer.rb
class WeeklyMailer < ActionMailer::Base
default from: "abc@example.com"
def weekly_email
@date = Period.date_from
recipient = "xxx@example.com"
subject = "お知らせ @date"
mail(:to => recipient,
:subject => subject)do |format|
format.html # HTML形式
format.text # テキスト形式
end
end
end
# app/views/weekly_mailer/weekly_email.html.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<p>てすと</p>
</body>
</html>
class WeeklyMailController < ApplicationController
class << self
def exec
WeeklyMailer.weekly_email.deliver
end
end
end
rails r WeeklyMailController.exec
# config/initializers/action_mailer_log_subscriber.rb
require 'action_mailer/log_subscriber'
module ActionMailer
class LogSubscriber
def deliver_with_debug(event)
deliver_without_debug(event)
debug(Mail.new(event.payload[:mail]).subject)
debug(Mail.new(event.payload[:mail]).body)
end
alias_method_chain :deliver, :debug
end
end
config/environments/development.rb
config.action_mailer.raise_delivery_errors = true #デフォルトはfalse
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:enable_starttls_auto => false, ## ないとエラー(※)がでる
:address => 'xxxxx.example.com',
:port => 250,
}
bundle/ruby/1.9.1/gems/railties-3.2.6/lib/rails/commands/runner.rb:53:in `eval': hostname does not match the server certificate (OpenSSL::SSL::SSLError)
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/smtp.rb:585:in `tlsconnect'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/smtp.rb:560:in `do_start'
from /home/xxx/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/smtp.rb:519:in `start'
...
gem 'mail-iso-2022-jp'差出人を書く所は、こんな書き方になります。
default from: "なまえ<aaa@example.com>", :charset => 'iso-2022-jp'
$ rails g model latest_info
invoke active_record
create db/migrate/20121030042916_create_latest_infos.rb
create app/models/latest_info.rb
invoke rspec
create spec/models/latest_info_spec.rb
$ rails destroy model latest_info
invoke active_record
remove db/migrate/20121030042916_create_latest_infos.rb
remove app/models/latest_info.rb
invoke rspec
remove spec/models/latest_info_spec.rb
<%= h simple_format(text) %>http://railsdoc.com/references/simple_format
文字列を<p>で括る
改行は<br />を付与
連続した改行は、</p><p>を付与
# config/application.rb
config.autoload_paths += %W(#{config.root}/lib/validators)
# lib/validators/repo_presence_validator.rb
class RepoPresenceValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless mail_groups(value)
object.errors[attribute] << (options[:message] || "は存在しません")
end
end
private
def mail_groups(value)
...
end
end
validates :name, :presence => true, :repo_presence => true<参考>
Project.includes(:client)
Team.includes(:project => [:client])さらにwhere句を付ける場合は、下記のようにテーブル名をつけてあげます。
Team.includes(:project => [:client]).where("clients.code = ? ", code)