Mar*_*iev 2 ruby-on-rails paperclip
所有环境都是从railsinstaller设置的.Ruby - 1.9.2-p290 Rails - 3.1.1等
错误:G:\ Projects\burk> gem install paperclip -v'2.5.0'ERROR:执行gem时...(Errno :: EINVAL)无效参数 - C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems /1.9.1/gems/paperclip-2.5.0/test/fixtures/question?mark.png
版本2.4.5安装正常,但在迁移时出错:
G:\ Projects\burk> gem install paperclip -v'2.5.0' - trace ERROR:执行gem时...(OptionParser :: InvalidOption)无效选项: - trace
G:\ Projects\burk> rake db:migrate --trace**调用db:migrate(first_time)**调用环境(first_time)**执行环境**调用db:load_config(first_time)**调用rails_env(first_time)**执行rails_env**执行db:load_config**执行db:migrate == CreateBrands:migration ============================= ====================== - create_table(:品牌)rake aborted!发生错误,所有后续迁移都已取消:
has_attached_file' for #<ActiveRecord::ConnectionAdapters::Tab
leDefinition:0x5c804a0>
G:/Projects/burk/db/migrate/20120115082718_create_brands.rb:6:inch ange中未定义的方法块'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/connection_adapters/abstract/schema_statements.rb:161:in create_table
'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/connection_adapters/mysql2_adapter.rb:481:increate_table'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/transition.rb:447: block in method_missing'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:422:inslock in say_with_time'C:/ RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/benchmark.rb:295:在measure'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:422:insay_with_time'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/ acti ve_record/migration.rb:442:在method_missing'
G:/Projects/burk/db/migrate/20120115082718_create_brands.rb:3:in更改'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:391:在block (2 levels) in migrate'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/benchmark.rb:295:in度量'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:391:in block in migrate'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/connection_adapters/abstract/connection_pool.rb:185:inwith_connectio n'C:/ RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:375:在migrate'
C:inmigrate'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems中/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.r b:687:在block (2 levels) in migrate'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:744:in调用'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:744:in ddl_transaction'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:686:inblock in migrate' C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:671:在each'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:671:inmigrate'C:/RailsInstaller/Ruby1.9.2/中lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:549:在up'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:530:inmigrate'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1中/gems/activerecord-3.1.3/lib/acti ve_record/railties/databases.rake:161:在block (2 levels) in <top (required)>'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:205:in调用'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9. 2.2/lib目录/耙/任务.rb:205:在block in execute'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:200:in每个'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task中.rb:200:在execute'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:158:ininvoke_with_call_chain 中的块'C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/monitor.rb:201:在mon_synchronize'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:151:ininvoke_with_call_chain'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/ 1.9.1 /宝石/耙-0.9.2.2/lib目录/耙/任务.rb:144:在invoke'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli
cation.rb:116:ininvoke_task'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli cation.rb:94:在block (2 levels) in top_level'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli
cation.rb:94:in每个'C: /RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli cation.rb:94:in block in top_level'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli
cation.rb:133:instandard_exception_handling'C:/RailsInstaller/Ruby1.9.2/lib/ ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli cation.rb:88:top_level'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli
cation.rb:66:in运行中的块'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1 /gems/rake-0.9.2.2/lib/rake/appli cation.rb:133:在standard_exception_handling'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/appli
cation.rb:63:in运行'C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/ bin/rake:33:在
<top (required)>'
C:/RailsInstaller/Ruby1.9.2/bin/rake:19:in加载'C:/RailsInstaller/Ruby1.9.2/bin/rake:19:在''任务:TOP => db:migrate
问题是有人添加了一个名为question?mark.pngGem测试文件的文件来测试Paperclip使用这些文件名的行为.不幸的是,问号不是Windows中文件名的合法字符.(参见目录,提交历史和讨论和问题)
最好的解决方法是从Github下载zip文件,将其复制到您的项目中并从Gemfile中明确引用Gem,如下所示:
gem 'paperclip', path: 'vendor/gems/paperclip'
Run Code Online (Sandbox Code Playgroud)
编辑:作为或2.5.2版本,Paperclip gem可以再次安装在Windows平台上.(提交)