28. # config.include RSpec::Octopus
config.before do
shards = ActiveRecord::Base.connection_proxy.instance_variable_get(:@shards)
@connections = shards.values.map(&:connection)
@connections.each do |connection|
connection.increment_open_transactions
connection.transaction_joinable = false
connection.begin_db_transaction
end
end
config.after do
@connections.each do |connection|
if connection.open_transactions != 0
connection.rollback_db_transaction
connection.decrement_open_transactions
end
end
end
33. class Sequence < SequenceShard
self.table_name = 'seq'
def self.generate(model)
result = self.connection.execute(
"UPDATE seq SET id=LAST_INSERT_ID(id+1)"
)
id = self.connection.last_inserted_id(result)
or raise RuntimeError
return id
end
end
48. class BaseLogic
include ActiveModel::MassAssignmentSecurity
include ActiveRecord::AttributeAssignment
include ActiveModel::Conversion
include ActiveModel::Validations
extend ActiveModel::Naming
extend ActiveModel::Translation
def persisted?; false; end
end
class TestLogic < BaseLogic
attr_accessor :foo
attr_accessible :foo
validates :foo, {presence: true, length: {maximum: 255}}
def get_test_one
end
end
96. public
subnet
net work
Gateway NAT
SSLの変換
subnet subnet subnet
subnet fluentd
utility storage
ser vice
deliver proxy
APP
Watch
redis
f f f
worker varnish
DB +
sinatra
f f worker
f f