所有环境都是从railsinstaller设置的。 Ruby - 1.9.2-p290 Rails - 3.1.1等
错误: G:\ Projects \ burk> gem install paperclip -v'2.5.0' 错误:执行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 错误:执行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:迁移============================================= ====== - create_table(:品牌) 耙子流产了! 发生错误,所有后续迁移都已取消:
ch中未定义的方法has_attached_file' for #<ActiveRecord::ConnectionAdapters::Tab
leDefinition:0x5c804a0>
G:/Projects/burk/db/migrate/20120115082718_create_brands.rb:6:in
阻止
安格”
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:in
create_table'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record / migration.rb:447:在say_with_time中的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:in
块中
C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/benchmark.rb:295:in measure'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record/migration.rb:422:in
say_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:in block (2 levels) in migrate'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/benchmark.rb:295:in
measure'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record / migration.rb:391:在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:in
with_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:in
迁移中
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti
ve_record / migration.rb: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:在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:in
块中迁移'
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:in
迁移中
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:in
迁移中
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/rake/task。
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:在invoke_with_call_chain中的execute'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:158:in
块中
C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.
rb:151:in
invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task。
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:in
invoke_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: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:in
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: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:in 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
run'
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:in''
任务:TOP =&gt;分贝:迁移
答案 0 :(得分:6)
问题是有人在Gem测试文件中添加了一个名为question?mark.png
的文件,以测试Paperclip使用此类文件名的行为。不幸的是,问号不是Windows中文件名的合法字符。 (请参阅directory,提交history和discussion以及issue)
最好的解决方法是下载zip file from Github,将其复制到项目中并从Gemfile中明确引用Gem,如下所示:
gem 'paperclip', path: 'vendor/gems/paperclip'
编辑:作为版本2.5.2,可以在Windows平台上再次安装Paperclip gem。 (Commit)