491 lines
12 KiB
Text
491 lines
12 KiB
Text
snippet art
|
|
assert_redirected_to ${1:action}: '${2:index}'
|
|
snippet artnp
|
|
assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${0:@$2})
|
|
snippet artnpp
|
|
assert_redirected_to ${1:parent}_${2:child}_path(${0:@$1})
|
|
snippet artp
|
|
assert_redirected_to ${1:model}_path(${0:@$1})
|
|
snippet artpp
|
|
assert_redirected_to ${0:model}s_path
|
|
snippet asd
|
|
assert_difference '${1:Model}.${2:count}', ${3:1} do
|
|
${0}
|
|
end
|
|
snippet asnd
|
|
assert_no_difference '${1:Model}.${2:count}' do
|
|
${0}
|
|
end
|
|
snippet asre
|
|
assert_response :${1:success}, @response.body
|
|
snippet asrj
|
|
assert_rjs :${1:replace}, '${0:dom id}'
|
|
snippet ass assert_select(..)
|
|
assert_select '${1:path}', ${2:text}: '${3:inner_html}' ${4:do}
|
|
${0}
|
|
end
|
|
snippet ba
|
|
before_action :${0:method}
|
|
snippet bf
|
|
before_filter :${0:method}
|
|
snippet bt
|
|
belongs_to :${0:association}
|
|
snippet btp
|
|
belongs_to :${1:association}, polymorphic: true
|
|
snippet crw
|
|
cattr_accessor :${0:attr_names}
|
|
snippet defcreate
|
|
def create
|
|
@${1:model_class_name} = ${2:ModelClassName}.new($1_params)
|
|
|
|
respond_to do |format|
|
|
if @$1.save
|
|
flash[:notice] = '$2 was successfully created.'
|
|
format.html { redirect_to(@$1) }
|
|
format.xml { render xml: @$1, status: :created, location: @$1 }
|
|
else
|
|
format.html { render action: 'new' }
|
|
format.xml { render xml: @$1.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
snippet defdestroy
|
|
def destroy
|
|
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
|
|
@$1.destroy
|
|
|
|
respond_to do |format|
|
|
format.html { redirect_to($1s_url) }
|
|
format.xml { head :ok }
|
|
end
|
|
end
|
|
snippet defedit
|
|
def edit
|
|
@${1:model_class_name} = ${0:ModelClassName}.find(params[:id])
|
|
end
|
|
snippet defindex
|
|
def index
|
|
@${1:model_class_name} = ${2:ModelClassName}.all
|
|
|
|
respond_to do |format|
|
|
format.html # index.html.erb
|
|
format.xml { render xml: @$1s }
|
|
end
|
|
end
|
|
snippet defnew
|
|
def new
|
|
@${1:model_class_name} = ${2:ModelClassName}.new
|
|
|
|
respond_to do |format|
|
|
format.html # new.html.erb
|
|
format.xml { render xml: @$1 }
|
|
end
|
|
end
|
|
snippet defshow
|
|
def show
|
|
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
|
|
|
|
respond_to do |format|
|
|
format.html # show.html.erb
|
|
format.xml { render xml: @$1 }
|
|
end
|
|
end
|
|
snippet defupdate
|
|
def update
|
|
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
|
|
|
|
respond_to do |format|
|
|
if @$1.update($1_params)
|
|
flash[:notice] = '$2 was successfully updated.'
|
|
format.html { redirect_to(@$1) }
|
|
format.xml { head :ok }
|
|
else
|
|
format.html { render action: 'edit' }
|
|
format.xml { render xml: @$1.errors, status: :unprocessable_entity }
|
|
end
|
|
end
|
|
end
|
|
snippet defparams
|
|
def ${1:model_class_name}_params
|
|
params.require(:$1).permit()
|
|
end
|
|
snippet dele delegate .. to
|
|
delegate :${1:methods}, to: :${0:object}
|
|
snippet dele delegate .. to .. prefix .. allow_nil
|
|
delegate :${1:methods}, to: :${2:object}, prefix: :${3:prefix}, allow_nil: ${0:allow_nil}
|
|
snippet amc
|
|
alias_method_chain :${1:method_name}, :${0:feature}
|
|
snippet flash
|
|
flash[:${1:notice}] = '${0}'
|
|
snippet habtm
|
|
has_and_belongs_to_many :${1:object}, join_table: '${2:table_name}', foreign_key: '${3}_id'
|
|
snippet hm
|
|
has_many :${0:object}
|
|
snippet hmd
|
|
has_many :${1:other}s, class_name: '${2:$1}', foreign_key: '${3:$1}_id', dependent: :destroy
|
|
snippet hmt
|
|
has_many :${1:object}, through: :${0:object}
|
|
snippet ho
|
|
has_one :${0:object}
|
|
snippet hod
|
|
has_one :${1:object}, dependent: :${0:destroy}
|
|
snippet i18
|
|
I18n.t('${1:type.key}')
|
|
snippet ist
|
|
<%= image_submit_tag('${1:agree.png}', id: '${2:id}'${0}) %>
|
|
snippet log
|
|
Rails.logger.${1:debug} ${0}
|
|
snippet log2
|
|
RAILS_DEFAULT_LOGGER.${1:debug} ${0}
|
|
snippet logd
|
|
logger.debug { '${1:message}' }
|
|
snippet loge
|
|
logger.error { '${1:message}' }
|
|
snippet logf
|
|
logger.fatal { '${1:message}' }
|
|
snippet logi
|
|
logger.info { '${1:message}' }
|
|
snippet logw
|
|
logger.warn { '${1:message}' }
|
|
snippet mapc
|
|
${1:map}.${2:connect} '${0:controller/:action/:id}'
|
|
snippet mapca
|
|
${1:map}.catch_all '*${2:anything}', controller: '${3:default}', action: '${4:error}'
|
|
snippet mapr
|
|
${1:map}.resource :${0:resource}
|
|
snippet maprs
|
|
${1:map}.resources :${0:resource}
|
|
snippet mapwo
|
|
${1:map}.with_options ${2:controller}: '${3:thing}' do |$3|
|
|
${0}
|
|
end
|
|
|
|
###############################
|
|
# model callback snippets #
|
|
###############################
|
|
|
|
# before callback
|
|
snippet mbv
|
|
before_validation :${0:method}
|
|
snippet mbc
|
|
before_create :${0:method}
|
|
snippet mbu
|
|
before_update :${0:method}
|
|
snippet mbs
|
|
before_save :${0:method}
|
|
snippet mbd
|
|
before_destroy :${0:method}
|
|
|
|
# after callback
|
|
snippet mav
|
|
after_validation :${0:method}
|
|
snippet maf
|
|
after_find :${0:method}
|
|
snippet mat
|
|
after_touch :${0:method}
|
|
snippet macr
|
|
after_create :${0:method}
|
|
snippet mau
|
|
after_update :${0:method}
|
|
snippet mas
|
|
after_save :${0:method}
|
|
snippet mad
|
|
after_destroy :${0:method}
|
|
|
|
# around callback
|
|
snippet marc
|
|
around_create :${0:method}
|
|
snippet maru
|
|
around_update :${0:method}
|
|
snippet mars
|
|
around_save :${0:method}
|
|
snippet mard
|
|
around_destroy :${0:method}
|
|
|
|
snippet mcht
|
|
change_table :${1:table_name} do |t|
|
|
${0}
|
|
end
|
|
snippet mp
|
|
map(&:${0:id})
|
|
snippet mrw
|
|
mattr_accessor :${0:attr_names}
|
|
snippet oa
|
|
order('${0:field}')
|
|
snippet od
|
|
order('${0:field} DESC')
|
|
snippet pa
|
|
params[:${1:id}]
|
|
snippet ra
|
|
render action: '${0:action}'
|
|
snippet ral
|
|
render action: '${1:action}', layout: '${0:layoutname}'
|
|
snippet rest
|
|
respond_to do |format|
|
|
format.${1:html} { ${0} }
|
|
end
|
|
snippet rf
|
|
render file: '${0:filepath}'
|
|
snippet rfu
|
|
render file: '${1:filepath}', use_full_path: ${0:false}
|
|
snippet ri
|
|
render inline: "${0:<%= 'hello' %>}"
|
|
snippet ril
|
|
render inline: "${1:<%= 'hello' %>}", locals: { ${2:name}: '${3:value}'${0} }
|
|
snippet rit
|
|
render inline: "${1:<%= 'hello' %>}", type: ${0::rxml}
|
|
snippet rjson
|
|
render json: '${0:text to render}'
|
|
snippet rl
|
|
render layout: '${0:layoutname}'
|
|
snippet rn
|
|
render nothing: ${0:true}
|
|
snippet rns
|
|
render nothing: ${1:true}, status: ${0:401}
|
|
snippet rp
|
|
render partial: '${0:item}'
|
|
snippet rpc
|
|
render partial: '${1:item}', collection: ${0:@$1s}
|
|
snippet rpl
|
|
render partial: '${1:item}', locals: { ${2:$1}: ${0:@$1} }
|
|
snippet rpo
|
|
render partial: '${1:item}', object: ${0:@$1}
|
|
snippet rps
|
|
render partial: '${1:item}', status: ${0:500}
|
|
snippet rt
|
|
render text: '${0:text to render}'
|
|
snippet rtl
|
|
render text: '${1:text to render}', layout: '${0:layoutname}'
|
|
snippet rtlt
|
|
render text: '${1:text to render}', layout: ${0:true}
|
|
snippet rts
|
|
render text: '${1:text to render}', status: ${0:401}
|
|
snippet ru
|
|
render :update do |${1:page}|
|
|
$1.${0}
|
|
end
|
|
snippet rxml
|
|
render xml: '${0:text to render}'
|
|
snippet sc
|
|
scope :${1:name}, -> { where(${2:field}: ${0:value}) }
|
|
snippet sl
|
|
scope :${1:name}, lambda do |${2:value}|
|
|
where('${3:field = ?}', ${0:value})
|
|
end
|
|
snippet sha1
|
|
Digest::SHA1.hexdigest(${0:string})
|
|
snippet sweeper
|
|
class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper
|
|
observe $1
|
|
|
|
def after_save(${0:model_class_name})
|
|
expire_cache($2)
|
|
end
|
|
|
|
def after_destroy($2)
|
|
expire_cache($2)
|
|
end
|
|
|
|
def expire_cache($2)
|
|
expire_page
|
|
end
|
|
end
|
|
snippet va validates_associated
|
|
validates_associated :${0:attribute}
|
|
snippet va validates .., acceptance: true
|
|
validates :${0:terms}, acceptance: true
|
|
snippet vc
|
|
validates :${0:attribute}, confirmation: true
|
|
snippet ve
|
|
validates :${1:attribute}, exclusion: { in: ${0:%w( mov avi )} }
|
|
snippet vf
|
|
validates :${1:attribute}, format: { with: /${0:regex}/ }
|
|
snippet vi
|
|
validates :${1:attribute}, inclusion: { in: %w(${0: mov avi }) }
|
|
snippet vl
|
|
validates :${1:attribute}, length: { in: ${2:3}..${0:20} }
|
|
snippet vn
|
|
validates :${0:attribute}, numericality: true
|
|
snippet vp
|
|
validates :${0:attribute}, presence: true
|
|
snippet vu
|
|
validates :${0:attribute}, uniqueness: true
|
|
snippet format
|
|
format.${1:js|xml|html} { ${0} }
|
|
snippet wc
|
|
where(${1:'conditions'}${0:, bind_var})
|
|
snippet wf
|
|
where(${1:field}: ${0:value})
|
|
snippet xdelete
|
|
xhr :delete, :${1:destroy}, id: ${2:1}
|
|
snippet xget
|
|
xhr :get, :${1:show}, id: ${2:1}
|
|
snippet xpost
|
|
xhr :post, :${1:create}, ${2:object}: ${3:object}
|
|
snippet xput
|
|
xhr :put, :${1:update}, id: ${2:1}, ${3:object}: ${4:object}
|
|
snippet test
|
|
test 'should ${1:do something}' do
|
|
${0}
|
|
end
|
|
###########################
|
|
# migrations snippets #
|
|
###########################
|
|
snippet mac
|
|
add_column :${1:table_name}, :${2:column_name}, :${0:data_type}
|
|
snippet mai
|
|
add_index :${1:table_name}, :${0:column_name}
|
|
snippet mrc
|
|
remove_column :${1:table_name}, :${0:column_name}
|
|
snippet mrnc
|
|
rename_column :${1:table_name}, :${2:old_column_name}, :${0:new_column_name}
|
|
snippet mcc
|
|
change_column :${1:table}, :${2:column}, :${0:type}
|
|
snippet mnc
|
|
t.${1:string} :${2:title}${3:, null: false}
|
|
snippet mct
|
|
create_table :${1:table_name} do |t|
|
|
${0}
|
|
end
|
|
snippet migration class .. < ActiveRecord::Migration .. def up .. def down .. end
|
|
class `substitute( substitute(vim_snippets#Filename(), '^\d\+_', '',''), '\(_\|^\)\(.\)', '\u\2', 'g')` < ActiveRecord::Migration
|
|
def up
|
|
${0}
|
|
end
|
|
|
|
def down
|
|
end
|
|
end
|
|
snippet migration class .. < ActiveRecord::Migration .. def change .. end
|
|
class `substitute( substitute(vim_snippets#Filename(), '^\d\+_', '',''), '\(_\|^\)\(.\)', '\u\2', 'g')` < ActiveRecord::Migration
|
|
def change
|
|
${0}
|
|
end
|
|
end
|
|
snippet trc
|
|
t.remove :${0:column}
|
|
snippet tre
|
|
t.rename :${1:old_column_name}, :${2:new_column_name}
|
|
${0}
|
|
snippet tref
|
|
t.references :${0:model}
|
|
snippet tcb
|
|
t.boolean :${1:title}
|
|
${0}
|
|
snippet tcbi
|
|
t.binary :${1:title}, limit: ${2:2}.megabytes
|
|
${0}
|
|
snippet tcd
|
|
t.decimal :${1:title}, precision: ${2:10}, scale: ${3:2}
|
|
${0}
|
|
snippet tcda
|
|
t.date :${1:title}
|
|
${0}
|
|
snippet tcdt
|
|
t.datetime :${1:title}
|
|
${0}
|
|
snippet tcf
|
|
t.float :${1:title}
|
|
${0}
|
|
snippet tch
|
|
t.change :${1:name}, :${2:string}, ${3:limit}: ${4:80}
|
|
${0}
|
|
snippet tci
|
|
t.integer :${1:title}
|
|
${0}
|
|
snippet tcl
|
|
t.integer :lock_version, null: false, default: 0
|
|
${0}
|
|
snippet tcr
|
|
t.references :${1:taggable}, polymorphic: { default: '${2:Photo}' }
|
|
${0}
|
|
snippet tcs
|
|
t.string :${1:title}
|
|
${0}
|
|
snippet tct
|
|
t.text :${1:title}
|
|
${0}
|
|
snippet tcti
|
|
t.time :${1:title}
|
|
${0}
|
|
snippet tcts
|
|
t.timestamp :${1:title}
|
|
${0}
|
|
snippet tctss
|
|
t.timestamps
|
|
${0}
|
|
##########################
|
|
# Rspec snippets #
|
|
##########################
|
|
#ShouldaMatchers#ActionController
|
|
snippet isfp
|
|
it { should filter_param :${0:key} }
|
|
snippet isrt
|
|
it { should redirect_to ${0:url} }
|
|
snippet isrtp
|
|
it { should render_template ${0} }
|
|
snippet isrwl
|
|
it { should render_with_layout ${0} }
|
|
snippet isrf
|
|
it { should rescue_from ${0:exception} }
|
|
snippet isrw
|
|
it { should respond_with ${0:status} }
|
|
snippet isr
|
|
it { should route(:${1:method}, '${0:path}') }
|
|
snippet isss
|
|
it { should set_session :${0:key} }
|
|
snippet issf
|
|
it { should set_the_flash('${0}') }
|
|
#ShouldaMatchers#ActiveModel
|
|
snippet isama
|
|
it { should allow_mass_assignment_of :${0} }
|
|
snippet isav
|
|
it { should allow_value(${1}).for :${0} }
|
|
snippet isee
|
|
it { should ensure_exclusion_of :${0} }
|
|
snippet isei
|
|
it { should ensure_inclusion_of :${0} }
|
|
snippet isel
|
|
it { should ensure_length_of :${0} }
|
|
snippet isva
|
|
it { should validate_acceptance_of :${0} }
|
|
snippet isvc
|
|
it { should validate_confirmation_of :${0} }
|
|
snippet isvn
|
|
it { should validate_numericality_of :${0} }
|
|
snippet isvp
|
|
it { should validate_presence_of :${0} }
|
|
snippet isvu
|
|
it { should validate_uniqueness_of :${0} }
|
|
#ShouldaMatchers#ActiveRecord
|
|
snippet isana
|
|
it { should accept_nested_attributes_for :${0} }
|
|
snippet isbt
|
|
it { should belong_to :${0} }
|
|
snippet isbtcc
|
|
it { should belong_to(:${1}).counter_cache ${0:true} }
|
|
snippet ishbtm
|
|
it { should have_and_belong_to_many :${0} }
|
|
snippet isbv
|
|
it { should be_valid }
|
|
snippet ishc
|
|
it { should have_db_column :${0} }
|
|
snippet ishi
|
|
it { should have_db_index :${0} }
|
|
snippet ishm
|
|
it { should have_many :${0} }
|
|
snippet ishmt
|
|
it { should have_many(:${1}).through :${0} }
|
|
snippet isho
|
|
it { should have_one :${0} }
|
|
snippet ishro
|
|
it { should have_readonly_attribute :${0} }
|
|
snippet iss
|
|
it { should serialize :${0} }
|
|
snippet isres
|
|
it { should respond_to :${0} }
|
|
snippet isresw
|
|
it { should respond_to(:${1}).with(${0}).arguments }
|
|
snippet super_call
|
|
${1:super_class}.instance_method(:${0:method}).bind(self).call
|