小编Mar*_*her的帖子

使用RVM在OSX上安装Rails 3

尝试在OSX 10.6上安装新的Rails 3版本.

自购买以来,从未在这台机器上接触过Ruby或Rails.

我能够获得rvm并获得Ruby 1.9.2.安装.从那里,我被卡住了.

我试过了:

rvmsudo gem install rails -v 3.0.0
sudo gem install rails --pre
sudo gem install rails
sudo gem update rails
Run Code Online (Sandbox Code Playgroud)

每次我得到相同的结果错误:

ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory - /Users/kevin/.rvm/gems/ruby-1.9.2-head@rails3/cache/activesupport-3.0.0.gem
Run Code Online (Sandbox Code Playgroud)

如果我做宝石清单,它说LOCAL GEMS并没有列出任何东西.

我已经阅读了一些演练,但老实说,他们都没有解决这个问题,这让我感到很生气.为什么这么难安装?如果有人可以帮助我让它运行,我很乐意学习它.

我试图遵循这个:

http://eddorre.com/posts/installing-rails-3-beta-4-using-rvm

还有这个:

http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard

这实际上是从ROR指南网站链接的.我错过了依赖吗?我如何让他们进去?

如果我这样做,rails -v我得到:

rails -v
/Library/Ruby/Site/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
    from /Library/Ruby/Site/1.8/rubygems.rb:214:in `activate'
    from /Library/Ruby/Site/1.8/rubygems.rb:1082:in `gem'
    from /usr/bin/rails:18
Run Code Online (Sandbox Code Playgroud)

ruby macos osx-snow-leopard rvm ruby-on-rails-3

14
推荐指数
1
解决办法
1万
查看次数

链轮require_directory问题

我在我新生成的Rails 3.1应用程序中使用了Yahoo的reset.css.给出以下app结构:

 - myapp
   - app
     - assets
       - stylesheets
         - application.css
   - ...
   - vendor
     - assets
       - stylesheets
         - yahoo
           - reset.css
           - fonts.css
Run Code Online (Sandbox Code Playgroud)

包含reset.css文件在我application.css使用require_directory指令后面的结尾require_tree argument must be a directory.

 /*
  *= require_directory ./yahoo
  */
Run Code Online (Sandbox Code Playgroud)

我有什么问题或者这是与Sprockets相关的错误吗?因为将reset.css文件移动到app/assets像魅力一样的工作.

(顺便说一句,在我的Rails 3.0应用程序中使用自定义Sprockets环境也遇到了问题.)

ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline

10
推荐指数
1
解决办法
9083
查看次数

为什么我不能使用称为"动作"的参数?

"action"是否被禁止作为输入字段名称?因为除了"动作"参数的赋值之外,一切都有效.

ruby-on-rails ruby-on-rails-3

9
推荐指数
2
解决办法
1573
查看次数

使用RVM的Mac OS X Lion Xcode问题

我有Xcode 4.1预览5工作正常,但决定通过App商店升级到最终的xcode 4.1.我首先卸载了Xcode ...

sudo /Developer/Library/uninstall-devtools –mode=all
Run Code Online (Sandbox Code Playgroud)

然后通过应用商店安装Xcode并重新启动.

我也完全删除了RVM,但是......现在每当我尝试安装Ruby版本时它都会失败.在错误文件中我得到这个:

[2011-07-27 18:29:25]  ./configure --prefix="/Users/holden/.rvm/usr"  
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... config/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... no
checking for gcc... /usr/bin/gcc-4.2
checking whether the C compiler works... no
configure: error: in `/Users/holden/.rvm/src/yaml-0.1.4':
configure: error: C compiler cannot create executables …
Run Code Online (Sandbox Code Playgroud)

ruby xcode rvm xcode4 osx-lion

8
推荐指数
2
解决办法
1万
查看次数

如何在Rails TestCases中显示更长的跟踪

是否有设置的配置变量,或其他一些方式让Rails ActiveSupport::TestCase显示多个跟踪线?否则很难调试.

例:

ERROR test_something (0.73s) 
      SystemStackError: stack level too deep
      /Users/mario/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:153
Run Code Online (Sandbox Code Playgroud)

ruby unit-testing ruby-on-rails-3

8
推荐指数
1
解决办法
2354
查看次数

在DOM元素之后移动选择

我目前正在为网络构建Markdown编辑器.通过Range接口附加HTML等效项,实时预览Markdown标记.使用以下代码,该代码应根据MDN工作:

var range = document.createRange()
var selection = window.getSelection()

range.setStart(textNode, start)
range.setEnd(textNode, end + 2)

surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)

var cursorRange = document.createRange()
cursorRange.setStartAfter(surroundingElement)

selection.removeAllRanges()
selection.addRange(cursorRange)
Run Code Online (Sandbox Code Playgroud)

Firefox的工作原理:一些粗体文字

http://f.cl.ly/items/093R343i23402K190k1t/firefox.gif

Chrome不是:一些粗体文字

在此输入图像描述

有什么建议可能是错的吗?有关此主题的信息很少见.


回答

感谢@Tim Down,我使用他在回答中提到的一个链接中描述的隐形字符解决方法修复了它.这是我现在使用的代码:

var range = document.createRange()

range.setStart(textNode, start)
range.setEnd(textNode, end + 2)

surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)

var selection = window.getSelection()
var cursorRange = document.createRange()

var emptyElement = document.createTextNode('\u200B')
element[0].appendChild(emptyElement)

cursorRange.setStartAfter(emptyElement)

selection.removeAllRanges()
selection.addRange(cursorRange) 
Run Code Online (Sandbox Code Playgroud)

javascript firefox google-chrome range selection

7
推荐指数
1
解决办法
1839
查看次数

Rails应用程序各部分的可视化表示

我已经学习Rails几个月了,最近意识到如果存在一些Rails应用程序部分的视觉"地图"会很方便.不仅仅是MVC部件,还有更多的核位,例如部分,规格等.这可以说明为几个流程,例如当页面加载和运行测试时.

有这样的事吗?

ruby-on-rails

6
推荐指数
1
解决办法
226
查看次数

带有链轮的Sinatra应用程序无法在Heroku上运行

我有一个小的Sinatra应用程序,包括这个模块:

module Sprockets
  module Helpers
    def asset_path(source)
      "/assets/#{Environment.instance.find_asset(source).digest_path}"
    end

    def sprockets
      Environment.instance.call(env)
    end
  end

  class << self
    def precompile
      dir = 'public/assets'

      FileUtils.rm_rf(dir, secure: true)
      ::Sprockets::StaticCompiler.new(Environment.instance, 'public/assets', [/\.(png|jpg)$/, /^(application|ie)\.(css|js)$/]).compile
    end
  end

  class Environment < ::Sprockets::Environment
    include Singleton

    def initialize
      super
      %w[app lib vendor].each do |dir|
        %w[images javascripts stylesheets].each do |type|
          path = File.join(root, dir, 'assets', type)
          append_path(path) if File.exist?(path)
        end
      end

      js_compressor = Uglifier.new
      css_compressor = YUI::CssCompressor.new

      context_class.instance_eval do
        include Helpers
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

并定义了以下路线:

get('/assets/*') do
  sprockets # …
Run Code Online (Sandbox Code Playgroud)

ruby heroku sinatra ruby-1.9 sprockets

6
推荐指数
1
解决办法
1537
查看次数

JSON Rails API的功能测试

我目前正在构建一个由Rails/rails-api支持的JSON API.我有一个路由接受通过PATCH请求发送的JSON和一个需要访问原始请求/ JSON的过滤器.

出于测试目的,我在过滤前添加了以下内容以显示我的问题

before_filter do
  puts "Raw Post: #{request.raw_post.inspect}"
  puts "Params: #{params.inspect}"
end
Run Code Online (Sandbox Code Playgroud)

以下curl请求按预期工作:

curl -X PATCH -H "Content-Type: application/json" -d '{"key":"value"}' http://localhost:3000/update

# Raw Post: "{\"key\":\"value\"}"
# Params: {"key"=>"value", "action"=>"update", "controller"=>"posts"}
Run Code Online (Sandbox Code Playgroud)

但是,我无法测试此方法,以下调用都不起作用:

  • 包括参数,但不是JSON转移

    test 'passing hash' do
      patch :update, { key: "value" }
    end
    
    # Raw Post: "key=value"
    # Params: {"key"=>"value", "controller"=>"posts", "action"=>"update"}
    
    Run Code Online (Sandbox Code Playgroud)
  • 包括参数,但同样不是JSON转移

    test 'passing hash, setting the format' do
      patch :update, { key: "value" }, format: :json
    end
    
    # Raw Post: "key=value"
    # Params: …
    Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails functional-testing rails-api ruby-on-rails-4

6
推荐指数
1
解决办法
969
查看次数

Rails验证上下文

我需要帮助我的ActiveRecord模型.我有使用内置上下文选项进行验证的基于上下文的验证(mis):

validates :foo, :on => :bar, :presence => true

model = Model.new
model.foo = nil
model.valid? # => true
model.save # works as expected

model.valid?(:bar) # => false
model.save(:context => :bar) # fails and returns false
Run Code Online (Sandbox Code Playgroud)

但是在a中使用我的模型accepts_nested_attributes_for :model并且调用parent.save失败(验证被调用并返回false),任何建议或解决方案?


仍然没有答案?要解释我的问题的更多信息:我有一个叫做Form多个Fields 的模型.用户应该在提交时看到验证错误,但无论如何都应该保存表单(有和没有错误).有不同类型的Fields,每个都具有全局验证(以确保数据库一致性)和它自己的特定用户定义验证(以验证用户输入的数据).所以我Field看起来像那样:

 # Global validations, to ensure database consistency
 # If this validations fail, the record should not be saved!
 validates_associated :form, :on => :global
 ...

 # Specific user-defined validations …
Run Code Online (Sandbox Code Playgroud)

validation activerecord ruby-on-rails ruby-on-rails-3

5
推荐指数
3
解决办法
6180
查看次数

Capybara field.has_css?匹配

我使用以下规格与MiniTest::SpecCapybara:

find_field('Email').must_have_css('[autofocus]')
Run Code Online (Sandbox Code Playgroud)

检查名为"电子邮件"的字段是否具有该autofocus属性.该文件说:

has_css?(path,options = {})

检查给定的CSS选择器是否在页面或当前节点上.

据我所知,字段'电子邮件'是一个节点,所以调用must_have_css肯定是有效的!我做错了什么?

ruby minitest capybara ruby-on-rails-3

5
推荐指数
1
解决办法
4226
查看次数

如何使用Draper 0.14.0访问装饰器规范文件中的辅助方法

目前在我的spec/decorators/product_decorator_spec.rb中,我有以下内容:

require 'spec_helper'

describe ProductDecorator do
  let(:product) { FactoryGirl.create(:product) }

  subject do
    ProductDecorator.first
  end

  before do
    product
  end

  it 'should render the name attribute with a link to the product page' do
    subject.name.should == h.link_to(product.name, 'test')
  end
end
Run Code Online (Sandbox Code Playgroud)

当我运行我的规范时,我得到以下内容:

F.....

Failures:

  1) ProductDecorator should render the name attribute with a link to the product page
     Failure/Error: subject.name.should == h.link_to(product.name, 'resr')
      NameError:
       undefined local variable or method `h' for #<RSpec::Core::ExampleGroup::Nested_2:0x007fbbf212c8b0>
     # ./spec/decorators/product_decorator_spec.rb:15:in `block (2 levels) in <top (required)>'

Finished in 0.98531 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3 draper

4
推荐指数
1
解决办法
3781
查看次数

Rails自定义submit_tag

有没有办法控制表单中的*submit_tag*以调用默认的"更新"操作的不同操作?

我尝试使用下面的submit_tag,但它仍然将我重定向到人员控制器中的"更新"操作.

<%= submit_tag "Save", :controller => "people", :action => "set_password", :method => "put" %>
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是,我有两个Person类的更新表单,一个用于更新基本信息,另一个用于更新密码.我想以不同的方式处理表单.对于"更新密码表单",我需要额外的东西.*如果出现错误,请验证其他用户输入(当前密码)*直接到"更新密码"表单

我做错了吗?或者我应该区分"更新"方法中的案例?

ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
1万
查看次数