小编Way*_*ina的帖子

如何获取我的Rails应用程序的基本URL(例如http:// localhost:3000)?

我正在使用Paperclip来允许用户附加内容,然后我发送电子邮件并希望将该文件附加到电子邮件中.我正在尝试读取该文件并将其添加为附件,如下所示:

# models/touchpoint_mailer.rb
class TouchpointMailer < ActionMailer::Base
  def notification_email(touchpoint)
    recipients "me@myemail.com"
    from "Touchpoint Customer Portal <portal@touchpointclients.com>"
    content_type "multipart/alternative"
    subject "New Touchpoint Request"
    sent_on Time.now
    body :touchpoint => touchpoint

    # Add any attachments the user has included
    touchpoint.assets.each do |asset|
      attachment :content_type => asset.file_content_type,
                 :body => File.read(asset.url)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误No such file or directory - /system/files/7/original/image.png?1254497688,堆栈跟踪说它是调用File.read.当我访问该show.html.erb页面,并单击图像链接时http://localhost:3000/system/files/7/original/image.png?1254497688,图像显示正常.

我该如何解决这个问题?

ruby-on-rails attachment paperclip

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

ABCPDF6问题:"HTML呈现为空白",但网页输出正常

就像标题所说,我们正在使用ABCPdf6从XSLT渲染PDF.一切都工作正常,但现在我们收到一个错误,指出"HTML呈现空白".使用浏览器(在IE/Firefox/Chrome上测试)我可以浏览生成的HTML(格式化的XSL),它在浏览器中显示完美.ABCPDF6无法转换文件.我试图控制输出XSL的页面,但我仍然收到此错误.

有没有人有ABCPdf的经验并且之前遇到过这种情况?代码在没有问题之前工作正常,而另一个使用完全相同的生成代码的页面(甚至指向吐出HTML 的相同占位符页面!)工作正常.

abcpdf

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

学习使用NAnt有哪些好资源?

我从来没有使用过自动构建系统 - 老实说,我从来没有使用它,因为我作为独立开发人员(不是选择)工作,只在我的工作站上进行开发,所以在Visual中使用Build菜单工作室对我来说已经足够好了.

我正在努力学习更多优秀的软件工程实践,持续集成就是其中之一.但是,我知道我需要使用自动构建脚本来设置CI环境,但我从来没有使用过,也不知道从哪里开始.

我听说NAnt是大多数专业开发人员使用的非常好的(尽管MSBuild类似吗?).有哪些好资源可以正确学习如何使用NAnt?

alt.net nant build-automation

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

为什么要在SQL文本列中存储分隔列表?

我必须维护一个具有许多文本数据类型的列的应用程序,其中插入多个值,用逗号,斜杠或有时甚至管道(|)字符分隔.我想弄明白你为什么要在地球上做这件事.

例如,订单表有一个名为详细信息的列,其中包含以下信息:

2x #ABC-12345  Widget, Black: $24.99 /4x #ABC-12344 Widget, Blue: $23.50
Run Code Online (Sandbox Code Playgroud)

其中/分离的行项目; 有一个VBScript代码,它从记录集中读取值并在一个For循环中解析它,以便使用类似的东西进行显示(这几乎就是代码读取的方式,变量名和所有内容)arydtls = split(rstmp("details"), "/").在整个代码中针对各种表重复该方法.

在我看来,它只是100倍更好(更不用说更容易使用)只是将细节放在一个单独的表中并链接回它(有趣的是,对于Orders它确实这样做,但数据不始终匹配详细信息文本字段,因为OrderDetail表在代码中更新;详细信息字段在应用程序中被视为只读.

我的前任是否知道我没有做过的事情,或者说"WTF?!!"我是对的.当我看这个架构?它看起来像是非常低效且难以维护,并且它使运行报告更加困难,因为我需要的数据可能包含在文本字段中,或者它可能位于十几个具有相似信息的表中并且用于不同的表中部分应用程序.

database-design

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

为什么不将IGNORE_DUP_KEY设置为ON?

IGNORE_DUP_KEY = ON基本上告诉SQL Server插入非重复的行,但是默默地忽略任何重复的行; 默认行为是引发错误并在不允许它们的列中存在重复时中止整个事务.

我已经处理了大量数据,这些数据通常至少有一个副本,UNIQUE当我不知道时,我喜欢在我知道一个值不应该有重复时使用约束; 然而,当我尝试批量加载数据时,我想要的最后一件事是它完成了90%,然后突然遇到重复并错误地解决了整个问题(是的,我知道明显的解决方案是确保没有重复,但有时我只是递给一个填充数据的电子表格并告诉他尽快加载它.

那么,具有默认值的原因是什么OFF,以及为什么希望它一直处于开启状态,以便任何非重复条目成功,而您不必担心任何重复项; 无论如何,重复的可能性都在那里.

它与性能或其他相关吗?这似乎是个好主意,但必须有一些理由说明它不是默认行为.

主要是,有充分的理由使用我应该知道的,还是应该根据具体情况进行评估?

t-sql sql-server database-design

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

你应该在多大程度上应用TDD?

我看到了TDD的好处,我正在努力学习如何绕过它.我也在阅读有关DDD的更多内容,并希望开始将它们应用到我的软件项目中.

我已经购买了一些"亲自动手"的编程书籍(通过"亲自动手",我的意思是那些用真正的解决方案而不是小片段来讨论真实世界的应用程序)我注意到他们通常开始定义"基础设施"以传统的代码优先方式使用应用程序层,而不是使用TDD; 这两本书都不遗余力地讨论TDD有多好以及案例研究将如何利用它.

例如,在其中一本书" ASP.NET 3.5社交网络"中,整个第二章开发了一个Logging包装类,一个Email包装类,Cache和Session包装类(及其相关的接口),所有这些都没有涉及单个单元测试.另一本书,.NET域驱动设计与C#:问题,设计,解决方案类似,并在触及"真实"代码之前创建基类和存储库框架代码优先.

我知道您应该测试域类的实际逻辑和功能.我曾经认为"不测试管道"代码只适用于您没有编写的代码(例如内置的.NET类),但我正在阅读的内容似乎表明/建议您只应测试代码这实际上与您的应用程序有关,而不是您编写的管道提供基础.

这是应用TDD的可接受方式吗?

tdd

8
推荐指数
3
解决办法
406
查看次数

我是否正确理解DI/IoC?

我目前正在尝试学习使用IoC容器的好处并熟悉DI.我已经开始使用StructureMap,因为它看似相当简单但功能强大.

我想验证我对这些概念的理解是否正确.让我们假设一个应用程序中的以下基本类(为简洁起见,省略了详细信息):

public class OrderService : IOrderService
{
    private IOrderRepository _repository;
    private ITaxCalculator _taxCalculator;
    private IShippingCalculator _shippingCalculator;

    public OrderService(IOrderRepository repository, 
        ITaxCalculator taxCalculator, 
        IShippingCalculator shippingCalculator)
    {
        this._repository = repository;
        this._shippingCalculator = shippingCalculator;
        this._taxCalculator = taxCalculator;
    }

    public IOrder Find(int id) { return this._repository.Find(id); }
}

public class OrderRepository : IOrderRepository
{
    public IOrder Find(int id) { // ... }
}

public class StandardShippingCalculator : IShippingCalculator
{
    // ...
}

public class StandardTaxCalculator : ITaxCalculator
{
    private ITaxSpecification _specification;

    public StandardTaxCalculator(ITaxSpecification specification) …
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection inversion-of-control solid-principles

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

Javascript模块模式有什么好处?

我一直在研究为我的团队提出标准化的Javascript编码风格.现在大多数资源都推荐涉及闭包的"模块"模式,例如:

var Module = function() { 

    someMethod = function() { /* ... */ };

    return { 
        someMethod: someMethod
    };

}();
Run Code Online (Sandbox Code Playgroud)

并调用它Module.someMethod();.这种方法似乎只适用于在传统OOP上下文中是静态的方法,例如用于获取/保存数据的存储库类,用于发出外部请求的服务层等.除非我遗漏了某些内容,否则模块模式不适用于通常需要传递给服务方法/从服务方法传递到UI粘合代码的数据类(想想DTO).

我看到的一个常见好处是你可以在Javascript中使用模块模式获得真正的私有方法和字段,但这也可以实现,同时能够使用类似于此的"经典"Javascript样式的静态实例方法:

myClass = function(param) { 
    // this is completely public
    this.publicProperty = 'Foo';

    // this is completely private
    var privateProp = param;

    // this function can access the private fields
    // AND can be called publicly; best of both?
    this.someMethod = function() { 
        return privateProp;
    };

    // this function is private.  FOR INTERNAL …
Run Code Online (Sandbox Code Playgroud)

javascript

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

关于Rails的BDD - 社区是否更接近于Shoulda或RSpec?

对于一个新的应用程序,我想开始涉足BDD,我试图在使用RSpec或Thoughtbot的Shoulda之间做出决定.我喜欢Shoulda使用的宏,以及它似乎没有重新发明Ruby/Rails测试的方式,而只是提供了一个附加组件.另一方面,宏似乎有点太"神奇",而不是明确你正在测试的东西(但是我知道,从涉及写一打很烦人"应该是无效的,没有xxx"两行上一个模型).说实话,我发现编写模型的规格/测试很简单,而且几乎非常容易,但我觉得为控制器编写它们是非常困难的,因为我不确定我应该测试什么或者如何编写它.

因为我认为它们给你错误的假设(因为你可以告诉它认为它有你需要的任何数据或者假装方法X被调用)我不知道嘲弄和抄写的主题我知道RSpec重使用它们.我喜欢RSPec生成的文档,但我正在创建一个销售应用程序,而不是给客户端,因此漂亮的文档并没有那么有用.我喜欢Cucumber,但它似乎有点矫枉过正(是的,我知道它可以和Shoulda一起使用).

在这一点上,Rails社区支持RSpec或Shoulda?

bdd rspec ruby-on-rails shoulda

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

Dapper是否支持使用存储过程的强类型对象?

基本上,我想对存储过程使用"漂亮"的Dapper语法,而不必手动使用exec MySproc @p1, @p2, @p3, @p4等等,但我需要能够传入一个具有各种属性集的强类型对象,并将此对象用于映射参数.我知道我可以用一个匿名对象来做这个,但我想到的场景就像一个复杂的搜索表单,可以搜索几个字段,相应的存储过程可以有很多参数(很多都有默认值) ).

理想情况下,我希望能够做到这样的事情:

var cust = new Customer();
cust.FirstName = ...
cust.LastName = ...

// using .NET 3.5 so need to use ugly syntax :(
var result = connection.Query<Customer>("MySproc", cust, null, false, null, CommandType.StoredProcedure).Single();
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用并抛出错误,因为我的Customer对象可能有十几个或更多属性,而我在这种情况下只寻找两个; Dapper似乎只是检查每个属性并分配一个值,假设在可能没有的情况下sproc中有相应的参数.

我可以使用PetaPoco(传入一个强类型对象一个匿名对象)做类似的事情,但我正在寻找比PetaPoco更抽象的东西.

我想在Dapper中做什么(或者其他微ORM?我不能使用NHibernate或重量级ORM),或者是否有一种方法我可以忽略得到相同的功能而不必写一个exec语句用什么可能是十几个参数?

stored-procedures query-by-example dapper

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