如何在 Windows 上安装 rmagick gem?

2023-11-27

如何为 Windows XP 安装 rmagick gem?我已经使用头文件安装了 ImageMagick,并且安装了 DevKit 附带的 RailsInstaller.org。我不知道到哪里去修复这些错误。

C:\RailsInstaller\ImageMagick-6.8.2-Q16>ruby -v
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]

C:\RailsInstaller\ImageMagick-6.8.2-Q16>gem -v
1.8.16

C:\RailsInstaller\ImageMagick-6.8.2-Q16>path=%PATH%;C:\RailsInstaller\ImageMagick-6.8.2-Q16

C:\RailsInstaller\ImageMagick-6.8.2-Q16>identify
Version: ImageMagick 6.8.2-0 2013-01-24 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC

C:\RailsInstaller\ImageMagick-6.8.2-Q16>gem install rmagick
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.
        C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
checking for Ruby version >= 1.8.5... yes
Invalid drive specification.
Unable to get ImageMagick version
*** 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=C:/RailsInstaller/Ruby1.9.3/bin/ruby


Gem files will remain installed in C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rmagick-2.13.1 for inspection.
Results logged to C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rmagick-2    .13.1/ext/RMagick/gem_make.out



C:\RailsInstaller\ImageMagick-6.8.2-Q16>dir include
 Volume in drive C has no label.
 Volume Serial Number is F8E5-EDB8

 Directory of C:\RailsInstaller\ImageMagick-6.8.2-Q16\include

01/29/2013  04:33 PM    <DIR>          .
01/29/2013  04:33 PM    <DIR>          ..
01/29/2013  04:33 PM    <DIR>          magick
01/29/2013  04:33 PM    <DIR>          Magick++
09/05/2009  04:47 PM               419 Magick++.h
01/29/2013  04:33 PM    <DIR>          wand

这是gem_make.out的内容

C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb
checking for Ruby version >= 1.8.5... yes
Invalid drive specification.
Unable to get ImageMagick version
*** 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=C:/RailsInstaller/Ruby1.9.3/bin/ruby

这是extconf.rb的内容

require "mkmf"
require "date"

RMAGICK_VERS = "2.13.1"
MIN_RUBY_VERS = "1.8.5"
MIN_RUBY_VERS_NO = MIN_RUBY_VERS.tr(".","").to_i
MIN_IM_VERS = "6.4.9"
MIN_IM_VERS_NO = MIN_IM_VERS.tr(".","").to_i



# Test for a specific value in an enum type
def have_enum_value(enum, value, headers=nil, &b)
  checking_for "#{enum}.#{value}" do
    if try_compile(<<"SRC", &b)
#{COMMON_HEADERS}
#{cpp_include(headers)}
/*top*/
int main() { #{enum} t = #{value}; t = t; return 0; }
SRC
      $defs.push(format("-DHAVE_ENUM_%s", value.upcase))
      true
    else
      false
    end
  end
end




# Test for multiple values of the same enum type
def have_enum_values(enum, values, headers=nil, &b)
  values.each do |value|
    have_enum_value(enum, value, headers, &b)
  end
end




def exit_failure(msg)
  Logging::message msg
  message msg+"\n"
  exit(1)
end




# Seems like lots of people have multiple versions of ImageMagick installed.
def check_multiple_imagemagick_versions()
   versions = []
   path = ENV['PATH'].split(File::PATH_SEPARATOR)
   path.each do |dir|
      file = File.join(dir, "Magick-config")
      if File.executable? file
         vers = `#{file} --version`.chomp.strip
         prefix = `#{file} --prefix`.chomp.strip
         versions << [vers, prefix, dir]
      end
   end
   versions.uniq!
   if versions.size > 1
      msg = "\nWarning: Found more than one ImageMagick installation. This could cause problems at runtime.\n"
      versions.each do |vers, prefix, dir|
         msg << "         #{dir}/Magick-config reports version #{vers} is installed in #{prefix}\n"
      end
      msg << "Using #{versions[0][0]} from #{versions[0][1]}.\n\n"
      Logging::message msg
      message msg
   end
end


# Ubuntu (maybe other systems) comes with a partial installation of
# ImageMagick in the prefix /usr (some libraries, no includes, and no
# binaries). This causes problems when /usr/lib is in the path (e.g., using
# the default Ruby installation).
def check_partial_imagemagick_versions()
   prefix = config_string("prefix")
   matches = [
     prefix+"/lib/lib?agick*",
     prefix+"/include/ImageMagick",
     prefix+"/bin/Magick-config",
   ].map do |file_glob|
     Dir.glob(file_glob)
   end
   matches.delete_if { |arr| arr.empty? }
   if 0 < matches.length and matches.length < 3
      msg = "\nWarning: Found a partial ImageMagick installation. Your operating system likely has some built-in ImageMagick libraries but not all of ImageMagick. This will most likely cause problems at both compile and runtime.\nFound partial installation at: "+prefix+"\n"
      Logging::message msg
      message msg
   end
end



if RUBY_PLATFORM =~ /mswin/
  abort <<END_MSWIN
+----------------------------------------------------------------------------+
| This rmagick gem is for use only on Linux, BSD, OS X, and similar systems  |
| that have a gnu or similar toolchain installed. The rmagick-win32 gem is a |
| pre-compiled version of RMagick bundled with ImageMagick for use on        |
| Microsoft Windows systems. The rmagick-win32 gem is available on RubyForge.|
| See http://rmagick.rubyforge.org/install-faq.html for more information.    |
+----------------------------------------------------------------------------+
END_MSWIN
end




unless checking_for("Ruby version >= #{MIN_RUBY_VERS}") do
  version = RUBY_VERSION.tr(".","").to_i
  version >= MIN_RUBY_VERS_NO
end
  exit_failure "Can't install RMagick #{RMAGICK_VERS}. Ruby #{MIN_RUBY_VERS} or later required.\n"
end




# Magick-config is not available on Windows
if RUBY_PLATFORM !~ /mswin|mingw/

  # Check for compiler. Extract first word so ENV['CC'] can be a program name with arguments.
  cc = (ENV["CC"] or Config::CONFIG["CC"] or "gcc").split(' ').first
  unless find_executable(cc)
    exit_failure "No C compiler found in ${ENV['PATH']}. See mkmf.log for details."
  end

  # Check for Magick-config
  unless find_executable("Magick-config")
    exit_failure "Can't install RMagick #{RMAGICK_VERS}. Can't find Magick-config in #{ENV['PATH']}\n"
  end

  check_multiple_imagemagick_versions()
  check_partial_imagemagick_versions()

  # Ensure minimum ImageMagick version
  unless checking_for("ImageMagick version >= #{MIN_IM_VERS}")  do
    version = `Magick-config --version`.chomp.tr(".","").to_i
    version >= MIN_IM_VERS_NO
  end
    exit_failure "Can't install RMagick #{RMAGICK_VERS}. You must have ImageMagick #{MIN_IM_VERS} or later.\n"
  end




  $magick_version = `Magick-config --version`.chomp

  # Ensure ImageMagick is not configured for HDRI
  unless checking_for("HDRI disabled version of ImageMagick") do
    not (`Magick-config --version`["HDRI"])
  end
    exit_failure "\nCan't install RMagick #{RMAGICK_VERS}."+
           "\nRMagick does not work when ImageMagick is configured for High Dynamic Range Images."+
           "\nDon't use the --enable-hdri option when configuring ImageMagick.\n"
  end

  # Save flags
  $CFLAGS     = ENV["CFLAGS"].to_s   + " " + `Magick-config --cflags`.chomp
  $CPPFLAGS   = ENV["CPPFLAGS"].to_s + " " + `Magick-config --cppflags`.chomp
  $LDFLAGS    = ENV["LDFLAGS"].to_s  + " " + `Magick-config --ldflags`.chomp
  $LOCAL_LIBS = ENV["LIBS"].to_s     + " " + `Magick-config --libs`.chomp

elsif RUBY_PLATFORM =~ /mingw/  # mingw

  `convert -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-\d+ /
  abort "Unable to get ImageMagick version" unless $1
  $magick_version = $1
  $LOCAL_LIBS = '-lCORE_RL_magick_ -lX11'

else  # mswin

  `convert -version` =~ /Version: ImageMagick (\d+\.\d+\.\d+)-\d+ /
  abort "Unable to get ImageMagick version" unless $1
  $magick_version = $1
  $CFLAGS = "-W3"
  $CPPFLAGS = %Q{-I"C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Include" -I"C:\\Program Files\\ImageMagick-#{$magick_version}-Q8\\include"}
  # The /link option is required by the Makefile but causes warnings in the mkmf.log file.
  $LDFLAGS = %Q{/link /LIBPATH:"C:\\Program Files\\Microsoft Platform SDK for Windows Server 2003 R2\\Lib" /LIBPATH:"C:\\Program Files\\ImageMagick-#{$magick_version}-Q8\\lib" /LIBPATH:"C:\\ruby\\lib"}
  $LOCAL_LIBS = 'CORE_RL_magick_.lib X11.lib'

end



#headers = %w{assert.h ctype.h errno.h float.h limits.h math.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h time.h}
headers = %w{assert.h ctype.h stdio.h stdlib.h math.h time.h}
headers << "stdint.h" if have_header("stdint.h")  # defines uint64_t
headers << "sys/types.h" if have_header("sys/types.h")


if have_header("wand/MagickWand.h")
   headers << "wand/MagickWand.h"
else
   exit_failure "\nCan't install RMagick #{RMAGICK_VERS}. Can't find MagickWand.h."
end



if RUBY_PLATFORM !~ /mswin|mingw/

  unless have_library("MagickCore", "InitializeMagick", headers) || have_library("Magick", "InitializeMagick", headers) || have_library("Magick++","InitializeMagick",headers)
    exit_failure "Can't install RMagick #{RMAGICK_VERS}. " +
           "Can't find the ImageMagick library or one of the dependent libraries. " +
           "Check the mkmf.log file for more detailed information.\n"
  end
end


have_func("snprintf", headers)
  ["AcquireImage",                   # 6.4.1
   "AffinityImage",                  # 6.4.3-6
   "AffinityImages",                 # 6.4.3-6
   "AutoGammaImageChannel",          # 6.5.5-1
   "AutoLevelImageChannel",          # 6.5.5-1
   "BlueShiftImage",                 # 6.5.4-3
   "ConstituteComponentTerminus",    # 6.5.7-9
   "DeskewImage",                    # 6.4.2-5
   "EncipherImage",                  # 6.3.8-6
   "EqualizeImageChannel",           # 6.3.6-9
   "FloodfillPaintImage",            # 6.3.7
   "FunctionImageChannel",           # 6.4.8-8
   "GetAuthenticIndexQueue",         # 6.4.5-6
   "GetAuthenticPixels",             # 6.4.5-6
   "GetImageAlphaChannel",           # 6.3.9-2
   "GetVirtualPixels",               # 6.4.5-6
   "LevelImageColors",               # 6.4.2
   "LevelColorsImageChannel",        # 6.5.6-4
   "LevelizeImageChannel",           # 6.4.2
   "LiquidRescaleImage",             # 6.3.8-2
   "MagickLibAddendum",              # 6.5.9-1
   "OpaquePaintImageChannel",        # 6.3.7-10
   "QueueAuthenticPixels",           # 6.4.5-6
   "RemapImage",                     # 6.4.4-0
   "RemoveImageArtifact",            # 6.3.6
   "SelectiveBlurImageChannel",      # 6.5.0-3
   "SetImageAlphaChannel",           # 6.3.6-9
   "SetImageArtifact",               # 6.3.6
   "SetMagickMemoryMethods",         # 6.4.1
   "SparseColorImage",               # 6.3.6-?
   "SyncAuthenticPixels",            # 6.4.5-6
   "TransparentPaintImage",          # 6.3.7-10
   "TransparentPaintImageChroma"     # 6.4.5-6
   ].each do |func|
    have_func(func, headers)
  end




checking_for("QueryMagickColorname() new signature")  do
  if try_compile(<<"SRC")
#{COMMON_HEADERS}
#{cpp_include(headers)}
/*top*/
int main() {
  MagickBooleanType okay;
  Image *image;
  MagickPixelPacket *color;
  char *name;
  ExceptionInfo *exception;
  okay = QueryMagickColorname(image, color, SVGCompliance, name, exception);
  return 0;
  }
SRC
    $defs.push("-DHAVE_NEW_QUERYMAGICKCOLORNAME")
    true
  else
    false
  end
end




have_struct_member("Image", "type", headers)          # ???
have_struct_member("DrawInfo", "kerning", headers)    # 6.4.7-8
have_struct_member("DrawInfo", "interline_spacing", headers)   # 6.5.5-8
have_struct_member("DrawInfo", "interword_spacing", headers)   # 6.4.8-0
have_type("DitherMethod", headers)                    # 6.4.2
have_type("MagickFunction", headers)                  # 6.4.8-8
have_type("ImageLayerMethod", headers)                # 6.3.6 replaces MagickLayerMethod
have_type("long double", headers)
#have_type("unsigned long long", headers)
#have_type("uint64_t", headers)
#have_type("__int64", headers)
#have_type("uintmax_t", headers)
#check_sizeof("unsigned long", headers)
#check_sizeof("Image *", headers)


have_enum_values("AlphaChannelType", ["CopyAlphaChannel",                    # 6.4.3-7
                                      "BackgroundAlphaChannel"], headers)    # 6.5.2-5
have_enum_values("CompositeOperator", ["BlurCompositeOp",                    # 6.5.3-7
                                       "DistortCompositeOp",                 # 6.5.3-10
                                       "LinearBurnCompositeOp",              # 6.5.4-3
                                       "LinearDodgeCompositeOp",             # 6.5.4-3
                                       "MathematicsCompositeOp",             # 6.5.4-3
                                       "PegtopLightCompositeOp",             # 6.5.4-3
                                       "PinLightCompositeOp",                # 6.5.4-3
                                       "VividLightCompositeOp"], headers)    # 6.5.4-3
have_enum_values("CompressionType", ["DXT1Compression",                      # 6.3.9-3
                                     "DXT3Compression",                      # 6.3.9-3
                                     "DXT5Compression",                      # 6.3.9-3
                                     "ZipSCompression",                      # 6.5.5-4
                                     "PizCompression",                       # 6.5.5-4
                                     "Pxr24Compression",                     # 6.5.5-4
                                     "B44Compression",                       # 6.5.5-4
                                     "B44ACompression"], headers)            # 6.5.5-4

have_enum_values("DistortImageMethod", ["BarrelDistortion",                  # 6.4.2-5
                                        "BarrelInverseDistortion",           # 6.4.3-8
                                        "BilinearForwardDistortion",         # 6.5.1-2
                                        "BilinearReverseDistortion",         # 6.5.1-2
                                        "DePolarDistortion",                 # 6.4.2-6
                                        "PolarDistortion",                   # 6.4.2-6
                                        "PolynomialDistortion",              # 6.4.2-4
                                        "ShepardsDistortion"], headers)      # 6.4.2-4
have_enum_value("DitherMethod", "NoDitherMethod", headers)                   # 6.4.3
have_enum_values("FilterTypes", ["KaiserFilter",                             # 6.3.6
                                 "WelshFilter",                              # 6.3.6-4
                                 "ParzenFilter",                             # 6.3.6-4
                                 "LagrangeFilter",                           # 6.3.7-2
                                 "BohmanFilter",                             # 6.3.7-2
                                 "BartlettFilter",                           # 6.3.7-2
                                 "SentinelFilter"], headers)                 # 6.3.7-2
have_enum_values("MagickEvaluateOperator", ["PowEvaluateOperator",           # 6.4.1-9
                                           "LogEvaluateOperator",            # 6.4.2
                                           "ThresholdEvaluateOperator",      # 6.4.3
                                           "ThresholdBlackEvaluateOperator", # 6.4.3
                                           "ThresholdWhiteEvaluateOperator", # 6.4.3
                                           "GaussianNoiseEvaluateOperator",  # 6.4.3
                                           "ImpulseNoiseEvaluateOperator",   # 6.4.3
                                           "LaplacianNoiseEvaluateOperator", # 6.4.3
                                           "MultiplicativeNoiseEvaluateOperator", # 6.4.3
                                           "PoissonNoiseEvaluateOperator",   # 6.4.3
                                           "UniformNoiseEvaluateOperator",   # 6.4.3
                                           "CosineEvaluateOperator",         # 6.4.8-5
                                           "SineEvaluateOperator",           # 6.4.8-5
                                           "AddModulusEvaluateOperator"],    # 6.4.8-5
                                                                 headers)
have_enum_values("MagickFunction", ["ArcsinFunction",                        # 6.5.2-8
                                    "ArctanFunction",                        # 6.5.2-8
                                    "PolynomialFunction",                    # 6.4.8-8
                                    "SinusoidFunction"], headers)            # 6.4.8-8
have_enum_values("ImageLayerMethod", ["FlattenLayer",                           # 6.3.6-2
                                      "MergeLayer",                             # 6.3.6
                                      "MosaicLayer",                            # 6.3.6-2
                                      "TrimBoundsLayer" ], headers)             # 6.4.3-8
have_enum_values("VirtualPixelMethod", ["HorizontalTileVirtualPixelMethod",     # 6.4.2-6
                                        "VerticalTileVirtualPixelMethod",       # 6.4.2-6
                                        "HorizontalTileEdgeVirtualPixelMethod", # 6.5.0-1
                                        "VerticalTileEdgeVirtualPixelMethod",   # 6.5.0-1
                                        "CheckerTileVirtualPixelMethod"],       # 6.5.0-1
                                                                 headers)


# Now test Ruby 1.9.0 features.
headers = ["ruby.h"]
if have_header("ruby/io.h")
   headers << "ruby/io.h"
else
   headers << "rubyio.h"
end

have_func("rb_frame_this_func", headers)

# Miscellaneous constants
$defs.push("-DRUBY_VERSION_STRING=\"ruby #{RUBY_VERSION}\"")
$defs.push("-DRMAGICK_VERSION_STRING=\"RMagick #{RMAGICK_VERS}\"")

create_header()
# Prior to 1.8.5 mkmf duplicated the symbols on the command line and in the
# extconf.h header. Suppress that behavior by removing the symbol array.
$defs = []

# Force re-compilation if the generated Makefile changed.
$config_h = "Makefile rmagick.h"

create_makefile("RMagick2")


SUMMARY = <<"END_SUMMARY"


#{"=" * 70}
#{DateTime.now.strftime("%a %d%b%y %T")}
This installation of RMagick #{RMAGICK_VERS} is configured for
Ruby #{RUBY_VERSION} (#{RUBY_PLATFORM}) and ImageMagick #{$magick_version}
#{"=" * 70}


END_SUMMARY

Logging::message SUMMARY
message SUMMARY

这是 mkmf.log 的内容

checking for Ruby version >= 1.8.5... -------------------- yes

--------------------

我也有 Cygwin 并在那里尝试过,但遇到了不同的与 ruby​​ 相关的错误。我可以看到一些错误,例如“无效的驱动器规范”,但我不知道它来自哪里。


RMagic 不适用于 ImageMagic 6.8。我更新了 RMagick Github wiki 并提供了详细说明。

https://github.com/rmagick/rmagick/wiki

在那里我发现了宝石(哈哈),例如

如果 ImageMagick 不是系统路径中的第一个,您将收到“无效 extconf.rb 尝试识别驱动器规范时出现错误 ImageMagick 版本。

and

gem install rmagick -- '--with-opt-dir="[path to ImageMagick]"'

(很明显,是吧?)

我相信 RMagick 是一个死项目。已经2年没有提交了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 上安装 rmagick gem? 的相关文章

  • 如何制作可选的强参数键但过滤嵌套参数?

    我的控制器中有这个 params require item permit 让我们假设这个 rspec 规范 它按预期工作 put update id item id item name new name 然而 以下原因ActionContr
  • 如何使用多个 { 'not find' } 来干燥方法?

    我正在尝试优雅地处理以下错误的 JSON 其中Hash fetch似乎不是一个选择 使用 Hash fetch 优雅地处理错误的 JSON https stackoverflow com questions 25193627 handle
  • 将元数据添加到 PDF

    我需要将元数据添加到我正在创建的 PDF 中prawn http rubygems org gems prawn 该元数据稍后可能会被提取 pdf阅读器 http rubygems org gems pdf reader 该元数据将包含内部
  • 在 Windows 中安装 RubyGems

    我是红宝石新手 我尝试按照网站中给出的步骤在我的电脑上安装 Ruby Gemshttp rubygems org pages download http rubygems org pages download 我从上述站点下载了软件包 将目
  • ruby 中 for 循环的语法

    如何在 Ruby 中执行这种类型的 for 循环 for int i 0 i
  • 耙子的目的是什么?

    我知道 Rake 代表 Ruby Make 而且我知道 Make 是一个 Unix 构建实用程序 现在 我来自 Xcode 工作 将 iPhone 应用程序构建到 Ruby 所以我以前从未使用过 Make 我唯一使用 rake 的时候是在
  • RSpec 与 Shoulda?

    我是单元测试场景的新手 我现在只使用单元测试大约两个月了 当我在 Ruby 中进行单元测试时 我目前遵循 TDD 风格并使用 Test Unit TestCase 我还阅读了 RSpec 以及它如何遵循 BDD 方法 我还读过关于 Shou
  • Rube.exe:Babun 中没有这样的文件或目录

    我正在尝试在 Babun 中安装 ruby gems 以便我可以安装 sass 和 compass 但不断收到错误 C RailsInstaller Ruby2 1 0 bin ruby exe No such file or direct
  • 不使用 RVM 时的 Cron +

    我使用的是RVM环境 RUby 版本 2 1 2 导轨 4 1 1 schedule rb every 1 minute do runner note send mail end I used whenever update crontab
  • 前面的冒号:YAML 语法

    我目前在项目中使用 Sidekiq 并且有以下 YAML 配置文件 concurrency 5 pidfile tmp pids sidekiq pid logfile log sidekiq log staging concurrency
  • Ruby Time.parse 给我超出范围的错误

    我正在使用 Time parse 从字符串创建 Time 对象 因为某些原因 Time parse 05 14 2009 19 00 导致参数超出范围错误 而 Time parse 05 07 2009 19 00 does not 有任何
  • 将 UTF-8 设置为 Heroku 中的默认字符串编码

    我需要在 Heroku 中将默认的 ruby 字符串编码更改为 UTF 8 由于某种原因它是 US ASCII heroku console Ruby console for myapp heroku com gt gt a encodin
  • 为什么 Ruby 中两个用空格分隔的字符串连接在一起?

    为什么这在 Ruby 中有效 foo bar gt foobar 我不确定为什么要连接字符串而不是给出语法错误 我很好奇这是否是预期的行为 以及解析器是否负责争论 没有运算符的两个字符串被视为单个字符串 或者语言定义本身指定了这种行为 隐式
  • 使用 slim 或 haml 在独立(非 Rails)Ruby 应用程序中指定布局和模板

    我正在尝试在独立 不是 Rails 应用程序中执行类似的操作 布局 slim h1 Hello content yield 显示 苗条 object name object description 我不知道如何指定布局和模板 slim 或h
  • 无法在 Windows 7 上安装 Rmagick 和 Imagemagick

    当我跑步时gem install rmagick 2 13 1 gem从 rmagick 2 13 1 gem 所在的目录中 我收到一个错误 指出它无法构建 gem 本机扩展 下面显示 c Ruby192 bin ruby exe extc
  • Ruby MRI 1.8.7 - 文件写入线程安全

    在我看来 在 Ruby MRI 1 8 7 中写入文件是完全线程安全的 示例 1 完美的结果 File open test txt a f threads 1 000 000 times do n threads lt lt Thread
  • 使用 PayPal REST API,如何取消付款?

    使用 PayPal REST API 在客户点击 取消订单并返回网站 链接后 我似乎无法弄清楚如何取消付款 也许在生产模式下 PayPal 会自动取消这些付款 但在沙盒模式下它们似乎仍处于 已创建 状态 这一观察结果使我相信 我需要在返回网
  • 创建并初始化具有连续名称的类的实例

    我有一个BankAccount班级 我试图创建这个类的多个实例并将它们放入一个数组中 例如 accounts Ba1 BankAccount new 100 Ba2 BankAccount new 100 我想初始化包含大量实例的数组 假设
  • 如何在 Rails 中重定向到 404?

    我想在 Rails 中 伪造 404 页面 在 PHP 中 我只发送一个带有错误代码的标头 如下所示 header HTTP 1 0 404 Not Found Rails 是如何做到这一点的 不要自己渲染 404 没有理由这样做 Rail
  • Rspec 通过 mTurk 测试实时结果

    我正在通过 Rspec 测试代码在 mTurk 上创建点击 但同时我需要测试必须从 mTurk 发回的结果 为了节省每次测试的复杂性 我使用 VCR 将 HTTP 请求记录在盒式磁带中 我该如何实施这个测试 好吧 我为此做了一些修改 我使用

随机推荐