lib/ronin/model/targets_arch.rb in ronin-exploits-0.2.1 vs lib/ronin/model/targets_arch.rb in ronin-exploits-0.3.0

- old
+ new

@@ -1,7 +1,6 @@ # -#-- # Ronin Exploits - A Ruby library for Ronin that provides exploitation and # payload crafting functionality. # # Copyright (c) 2007-2009 Hal Brodigan (postmodern.mod3 at gmail.com) # @@ -16,42 +15,54 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -#++ # require 'ronin/arch' +require 'extlib' + module Ronin module Model module TargetsArch def self.included(base) base.module_eval do # The targeted architecture - belongs_to :arch + belongs_to :arch, + :nullable => true # - # Returns the current targeted arch if no _name_ is given. If a - # _name_ is given, a new Arch object will be created with the - # given _name_ and associated with the target. + # The targeted architecture. # + # @param [Symbol] name + # If a name is given, a new Arch with the matching name will be + # targeted. + # + # @return [Arch] + # The architecture to target. + # + # @example Accessing the targeted architecture # target.arch # # => nil # + # @example Setting the targeted architecture # target.arch :i686 # # => #<Ronin::Arch type=Ronin::Arch id=nil name="i686" # # endian="little" address_length=4> # def arch(name=nil) if name return self.arch = Arch[name] else - return arch_association + return relationships[:arch].get(self) end end end + + model_name = base.name.split('::').last.snake_case.plural.to_sym + Arch.has Arch.n, model_name, :model => base.name end end end end