我最近使用hivelogic上的说明清除了所有ruby安装并安装了表单源
我已经能够安装一些宝石,但大多数时候,"sudo gem install rails"挂起.我添加了-V标志,它似乎挂起,我没有得到任何错误.而这个过程无法杀死.我只能重启才能杀死进程.
我的红宝石信息:
[tim@ ~]# ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
[tim@ ~]# gem -v
1.3.6
[tim@ ~]# gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.6
- RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-darwin-10
- GEM PATHS:
- /usr/local/lib/ruby/gems/1.8
- /Users/tim/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark …Run Code Online (Sandbox Code Playgroud) 在使用ASP.Net MVC之后,我想到了Rails.我之前和Rails一起工作过,但是有点生疏了.ASP.Net MVC教程建议使用存储库模式隐藏数据层实现.这允许简单的依赖注入进行单元测试,以及控制器与模型实现的良好解耦.
我记得Rails的控制器直接使用Active Record对象,并使用可以轻松设置和拆卸的测试数据库进行单元测试.这解决了换掉单元测试的需要,但是在控制器中暴露出如此多的ActiveRecord代码仍然是一个坏主意.
所以我的问题是,这里最新的最佳做法是什么?真实(非模拟)数据库是否仍用于单元测试?Rails开发人员直接调用ActiveRecord还是抽象?
ruby unit-testing ruby-on-rails separation-of-concerns repository-pattern
我在Rails和ASP.Net MVC中遇到了以下问题.通常页面上有多个功能小部件,但是应该有一个控制器动作呈现页面.让我说明一下:
假设我有一个普通的电子商务网站,菜单由类别组成,而页面则显示一组产品.
对于产品,假设我在控制器上有一个动作,看起来像:
def product_list
@products = Products.find_by_category(:name => 'lawnmowers')
end
Run Code Online (Sandbox Code Playgroud)
我有一个类似的布局
<div id="menu"><%= render :partial => 'menu' %></div>
<div id="content"><%= yield %></div>
Run Code Online (Sandbox Code Playgroud)
产品有一个观点......
<%= render :partial => 'product', :collection => @products %>
Run Code Online (Sandbox Code Playgroud)
(注意我已经忽略了产品视图无关紧要)
菜单有部分......
<% Category.each {|c| %>
<%= render :partial => 'menu_node', :locals => { :category => c } %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我遇到问题的一行是视图中的"Category.each.do".我在视图中获取数据,而不是使用在控制器中设置和绑定的变量.它可以很容易地成为一个产生菜单的更复杂的方法调用.
我考虑过的解决方案是:
- 一个知道如何获取各种数据的视图模型基类.但是,对于网站的每个概念性"部分",您最终可能会得到其中一个.
- 填充在每个方法顶部的局部变量(违反DRY) - 同样的事情,但是在before_filter调用中
这些对我来说都不是很优雅.我不禁看看这个问题,并认为每个视图(不是屏幕)的MVP演示者是一个更优雅的解决方案.
ASP.Net MVC具有渲染操作(与rails render:action不同),它确实解决了这个问题,但我不确定我对该解决方案的看法.
思考?解决方案建议
补充说明: 到目前为止提供的答案都是很好的建议.它们适用于我给出的示例,其中每个布局中都可能存在菜单,并且显然是产品数据的次要选项.
但是,如果显然没有二等公民呢?门户类型站点通常具有多个不相关的小部件,其中每个小部件都很重要.
例如,如果此页面显示天气趋势,温度,湿度和降水的小部件(每个都是不同的模型和视图类型),该怎么办?
model-view-controller asp.net-mvc design-patterns ruby-on-rails
在NUnit中,我习惯在测试中编写Trace语句,并将它们显示在NUnit gui的trace选项卡中.
在一个新项目中,我正在转向Visual Studio Professional Addition中的内置单元测试,我相信它是mstest.exe的接口.
测试代码:
<TestMethod()>
Public Sub TestPagesInheritFromBasePage()
Dim webUI As Assembly = Assembly.GetAssembly(GetType(WebUI.BasePage))
Dim badPages As New List(Of String)
For Each t As Type In webUI.GetTypes()
Debug.Write(t.Name + ", ")
Trace.Write(t.Name + ", ")
If t.BaseType Is GetType(System.Web.UI.Page) Then badPages.Add(t.Name)
Next
Debug.Flush()
Trace.Flush()
If badPages.Count > 0 Then
Assert.Fail("{0}: do not inheriting from BasePage", String.Join(", ", badPages.ToArray()))
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我遇到了失败,所以我知道Debug.Write和Trace.Write行正在执行.
我已经阅读了MSDN文档来编写这些测试,如果在命令行执行,我可以通过以下方式查看跟踪输出:
mstest.exe /testcontainer:mydll.dll /detail:debugtrace
Run Code Online (Sandbox Code Playgroud)
但是,在visual studio中直接执行测试时,我找不到跟踪输出.是否有另一种在单元测试期间输出信息的首选方法,或者我是否缺少在visual studio中查看跟踪信息的选项?
答案: 下面的两个答案(Console.Write和Debug.Write)都有效,结果在测试结果详细信息中(底部的TestResult窗格,右键单击测试结果并转到TestResultDetails).另外,我在项目属性中设置了Debug和Trace常量.
我真的很厌倦数学.我的意思是,我真的很喜欢数学.我正在尝试为我将使用的算法制作一个简单的斐波那契序列类.我见过python示例,看起来像这样:
a = 0
b = 1
while b < 10:
print b
a, b = b, b+a
Run Code Online (Sandbox Code Playgroud)
问题是我无法用任何其他语言实现这项工作.我想让它在Java中工作,因为我几乎可以将它翻译成我在那里使用的其他语言.这是一般的想法:
public class FibonacciAlgorithm {
private Integer a = 0;
private Integer b = 1;
public FibonacciAlgorithm() {
}
public Integer increment() {
a = b;
b = a + b;
return value;
}
public Integer getValue() {
return b;
}
}
Run Code Online (Sandbox Code Playgroud)
我最终得到的只是倍增,我可以用乘法来做:(任何人都可以帮助我吗?数学让我感到高兴.
给出一个正常的nhibernate配置文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://localhost/xmlStylesheets/nhibernate.xsl"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
<property name="connection.connection_string">Data Source=MyDB;User ID=MyUser;Connection Lifetime=0;Enlist=false;Pooling=true;Max Pool Size=100;Min Pool Size=0;Incr Pool Size=5;Decr Pool Size=1;Statement Cache Size=100;</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="use_outer_join">true</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
我为它创建了一个xslt转换.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="urn:nhibernate-configuration-2.2">
<xsl:template match="h:hibernate-configuration/h:session-factory">
<html>
<head>
<title>Projects</title>
<link rel="Stylesheet" type="text/css"
href="http://localhost/xmlStylesheets/xml.css" />
</head>
<body>
<div id="container">
<div class="content" id="settings">
<xsl:value-of select="count(h:property)" /> properties
<table class="grid">
<thead>
<tr>
<th>Property</th>
<th>Value</th> …Run Code Online (Sandbox Code Playgroud)